Ответ 1
Использует ли один из поддоменов символ подчеркивания? IE имеет проблемы с принятием файлов cookie из поддоменов, которые не следуют URI RFC.
У меня есть сайт, например. example.com
, где пользователи могут устанавливать свои собственные поддомены (один пользователь - один поддомен) и загружать свои собственные скрипты, например. http://somedomain.example.com/xyzzy.php
будет отображаться на /www/somedomain/xyzzy.php
Теперь, в некоторых из этих доменов, Internet Explorer 7 не будет/не может принимать файлы cookie. Проверено с помощью Fiddler: сервер отправляет ответ Set-Cookie правильно, но cookie никогда не появляется в IE - для JS или инструментов разработчика. По запросу IE7 также не отправляет заголовок Cookie.
Файлы cookie настроены для домена пользователя (например, somedomain.example.com
), путь /
, попробовали разные варианты истечения срока действия (прошлое, будущее, текущее, "0" ), не являются HttpOnly, не являются безопасными.
FF, Opera, Safari и Chrome работают без проблем.
Почему IE игнорирует файлы cookie?
Использует ли один из поддоменов символ подчеркивания? IE имеет проблемы с принятием файлов cookie из поддоменов, которые не следуют URI RFC.
Согласно RFC1035 (Доменные имена - реализация и спецификация):
[доменные имена] должны начинаться с буквы, заканчиваться буквой или цифрой и иметь в качестве внутренних символов только буквы, цифры и дефис.
Оказывается, некоторые из доменов имеют в них символ подчеркивания ( "_" ): some_domain.example.com
. Хотя это является нарушением RFC, все остальные браузеры работают нормально.
MSIE 7, в домене с подчеркиванием, молча удаляет все файлы cookie для этого хоста и отказывается принимать новые.
Единственное решение - использовать RFC-совместимые домены (я заменил все "_" на "-" s и настроил RewriteRule, чтобы трафик перенаправлялся на совместимые домены).
Проблема не только применяется для подчеркивания имен доменов, но и для доменных имен, начинающихся с числовой цифры. Таким образом, 1aaaaaaa.tld
на самом деле является нестандартным доменным именем, что приведет к тому, что IE отклонит файл cookie.
Я решил это, используя только www2.1aaaaaaa.tld
, а затем добавив правила перезаписи для хостов 1aaaaaaa.tld
и www.1aaaaaaa.tld
в .htaccess
. Не знаю, действительно ли это относится к стандартизованному решению.... но в любом случае, похоже, он решил проблему с файлом cookie.
Надеюсь, что это поможет кому-то!