Internet Explorer игнорирует куки на некоторых доменах (не может читать или устанавливать куки) - PullRequest
59 голосов
/ 27 апреля 2009

У меня есть сайт, например 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 ]

106 голосов
/ 27 апреля 2009

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

51 голосов
/ 27 апреля 2009

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

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

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

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

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

13 голосов
/ 25 января 2010

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

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

Надеюсь, это кому-нибудь поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...