因为除了TLD之外,告诉短域名并非易事,{IE}的特殊情况Microsoft maintains a list。该列表可在res://urlmon.dll/ietldlist.xml
。
但是,我不明白如何实际使用该列表。即使 列出的特权双字母域似乎行为不端。
例如,可以在列表中找到域cn.ca。但这是我在IE8的javascript控制台中得到的:
同样的方法适用于较长的域,例如stackoverflow.com(我在此示例之前清除了我的cookie以避免不相关的噪音):
特殊情况清单是否真的被破坏了,还是我只是误解了它的目的?在IE8中是否有任何方式为短域设置cookie(不限于子域)?
答案 0 :(得分:5)
documentation中没有好消息。但是,我在MSDN blog post中找到了很好的解释。
与您的问题最相关的是问题6:
IE不会为某些域设置Cookie,例如格式为http://xx.yy的域名?
正确。这个想法是你可能不会在“顶层”设置cookie 域名由不相关的组织共享。从历史上看,ccTLD的 格式xx.yy是有效的TLD,因此可能无法设置cookie。 虽然这种启发式方法从来都不是完美的,但它一直没有改变 15年,因此不太可能很快改变。该 这个问题的复杂性值得一篇很长的博客文章 - see this post。
其他有趣的花絮:
IE的cookie代码似乎不支持定义 RFC2109或RFC2965。
Internet Explorer(包括IE8)不会尝试支持任何RFC 饼干。 WinINET(IE下面的网络堆栈)具有基于RFC之前的Netscape草案规范的cookie实现。
如果在设置DOMAIN属性时没有指定前导点,则IE 不关心?
正确。所有当前版本的浏览器(Chrome,FF,Opera等)似乎都将前导点视为隐式
来自Microsoft Support(影响IE 6.0,7.0和8.0):
症状:用户从http://servername.xxx.yy打开网页。该地址的网站设置一个cookie并指定“xxx.yy”作为该cookie的域。但是,Internet Explorer不会保存cookie信息。
原因:出于安全原因,Internet Explorer不会为xxx.yy这样的域保存cookie数据,其中.yy是双字母国家/地区代码域,而三个字母xxx是其中之一通用顶级域名:com,edu,gov,int,mil,net或org。此表单的域被视为顶级域,实际上是通用顶级域的特定于国家/地区的版本。出于安全原因,wininet会阻止为此类域设置Cookie。在这种情况下,xxx.yy实际上是顶级域名,并且以与“.com”相同的方式受到保护。
解决方案:此行为是设计使然。