Internet Explorer игнорирует куки на некоторых доменах (не может читать или устанавливать куки)

У меня есть сайт, например example.comгде пользователи могут устанавливать свои собственные субдомены (один пользователь - один субдомен) и загружать свои собственные скрипты, например http://somedomain.example.com/xyzzy.php будет отображаться в /www/somedomain/xyzzy.php

Теперь в некоторых из этих доменов Internet Explorer 7 не принимает / не может принимать файлы cookie. Проверено с помощью Fiddler: сервер правильно отправляет ответ Set-Cookie, но cookie никогда не появляется в IE - для JS или Developer Tools. По запросу IE7 также не отправляет заголовок Cookie.

Файлы cookie устанавливаются для домена пользователя (например, somedomain.example.com) путь /, пробовал разные варианты истечения (прошлые, будущие, текущие, "0"), не HttpOnly, не являются безопасными.

FF, Opera, Safari и Chrome все работают без проблем.

Почему IE игнорирует куки?

3 ответа

Решение

Один из поддоменов использует подчеркивание? IE имеет проблемы с принятием файлов cookie с поддоменов, которые не соответствуют URI RFC.

Согласно RFC1035 (доменные имена - реализация и спецификация):

[доменные имена] должны начинаться с буквы, заканчиваться буквой или цифрой и содержать в качестве внутренних символов только буквы, цифры и дефис.

Оказывается, некоторые из доменов имели подчеркивание ( "_") в них: some_domain.example.com, Хотя это нарушение RFC, все остальные браузеры работают нормально.

MSIE 7 в домене с подчеркиванием молча удаляет все куки для этого хоста и отказывается принимать новые.

Единственное решение - использовать RFC-совместимые домены (я заменил все "_" на "-" и настроил RewriteRule, чтобы трафик перенаправлялся на совместимые домены).

Эта проблема касается не только подчеркивания в доменных именах, но и доменных имен, начинающихся с цифры. Так 1aaaaaaa.tld на самом деле это нестандартное доменное имя, которое приведет к тому, что IE отклонит cookie.

Я решил это, используя только www2.1aaaaaaa.tld, а затем добавив правила перезаписи для 1aaaaaaa.tld а также www.1aaaaaaa.tld хосты в .htaccess, Не знаю, действительно ли это квалифицируется как совместимое со стандартами решение... но в любом случае, похоже, оно решило проблему с cookie.

Надеюсь, что это помогает кому-то!

Другие вопросы по тегам