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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Давайте будем гением компьютера.