Как установить файлы cookie для двухбуквенных доменов в IE8?

Поскольку нет тривиального указания коротких доменных имен, кроме TLD, Microsoft ведет список особых случаев для IE8. Список можно найти в res://urlmon.dll/ietldlist.xml.

Однако я не понимаю, как на самом деле использовать этот список. Даже привилегированные двухбуквенные домены, которые перечислены, как представляется, плохо себя ведут.

Например, в списке можно найти домен cn.ca. Но вот что я получаю в IE8 javascript консоли:

Cookie setting fails on ca.cn with IE8

Тот же метод отлично работает в более длинном домене, таком как stackoverflow.com(я очистил свои файлы cookie до этого примера, чтобы избежать несвязанного шума):

Cookie setting works on stackoverflow.com with IE8

Является ли список особых случаев действительно сломанным, или я просто неправильно понимаю его цель? Есть ли способ установить файлы cookie (не ограничиваясь субдоменом) для коротких доменов в IE8?

Ответы

Ответ 1

Нет никакой информации в документации. Тем не менее, я нашел хорошую запись на этом в сообщении MSDN.

Наиболее актуальным для вашего вопроса является Q6:

IE не будет устанавливать cookie для определенных доменов, например, в формате http://xx.yy?

Правильно. Идея состоит в том, что вы не можете установить cookie на "топ-уровне", домена, совместно используемого несвязанными организациями. Исторически сложилось так, что ccTLD format xx.yy были эффективными TLD, поэтому файлы cookie не могут быть установлены на них. Хотя эта эвристика никогда не была совершенной, она не изменилась 15 лет и, следовательно, вряд ли изменится в ближайшее время. сложность этой проблемы заслуживает длинного блога, все его собственные. см. это пост.

Другие интересные лакомые кусочки:

Код IE cookie, похоже, не поддерживается, как определено в RFC2109 или RFC2965.

Internet Explorer (включая IE8) не пытается поддерживать какой-либо RFC для файлов cookie. WinINET (сетевой стек ниже IE) имеет реализацию cookie на основе спецификации предварительного запроса RFC Netscape для файлов cookie.

Если я не укажу ведущую точку при настройке атрибута DOMAIN, IE не заботится?

Правильно. Все браузеры текущей версии (Chrome, FF, Opera и т.д.), Похоже, рассматривают ведущую точку как неявное

От Поддержка Microsoft (влияет на IE 6.0, 7.0 и 8.0):

Симптомы: Пользователь открывает веб-страницу из http://servername.xxx.yy. Веб-сайт по этому адресу устанавливает cookie и указывает "xxx.yy" как домен для этого файла cookie. Однако Internet Explorer не сохраняет информацию о файлах cookie.

Причина.. Из соображений безопасности Internet Explorer не сохраняет данные cookie для таких доменов, как xxx.yy, где .yy является доменом двухбуквенного кода страны, а три буквы xxx являются одним из общие доменные имена верхнего уровня: com, edu, gov, int, mil, net или org. Домены этой формы рассматриваются как домены верхнего уровня, эффективно для конкретной версии домена общего уровня для конкретной страны. По соображениям безопасности wininet предотвращает установку файлов cookie для таких доменов. В этом случае xxx.yy фактически является доменом верхнего уровня и защищен так же, как и ".com".

Разрешение: Это поведение по дизайну.