如何在 IE8 中为两个字母的域设置 cookie?

2024-06-18

因为区分短域名和 TLD 并非易事,微软维护一个列表 http://blogs.msdn.com/b/ieinternals/archive/2009/09/19/private-domain-names-and-public-suffixes-in-internet-explorer.aspxIE8 的特殊情况。该列表可以在以下位置找到:res://urlmon.dll/ietldlist.xml.

但是,我不明白如何实际使用该列表。即使是特权的两字母域名are列出的似乎行为不端。

例如,域cn.ca http://cn.ca/可以在列表中找到。但这是我在 IE8 的 javascript 控制台中得到的结果:

同样的方法在较长的域上完美工作,例如 stackoverflow.com(我在本示例之前清除了 cookie,以避免不相关的噪音):

特殊情况列表实际上已损坏,还是我只是误解了其目的?有没有any如何在 IE8 中为短域设置 cookie(不限于子域)?


中没有好的信息文档 http://msdn.microsoft.com/en-us/library/ie/ms533693%28v=vs.85%29.aspx。不过,我在一篇文章中发现了一篇关于此的很好的文章MSDN 博客文章 http://blogs.msdn.com/b/ieinternals/archive/2009/08/20/wininet-ie-cookie-internals-faq.aspx.

与您的问题最相关的是问题 6:

IE 不会为某些域设置 cookie,例如以下格式的域http://xx.yy http://xx.yy?

正确的。这个想法是您不能在“顶级”上设置 cookie 由无关组织共享的域。从历史上看,ccTLD 格式 xx.yy 是有效的 TLD,因此可能不会在其上设置 cookie。 虽然这种启发式方法从来都不是完美的,但它已经持续了超过 15 年,因此不太可能很快改变。这 这个问题的复杂性值得写一篇很长的博文——看到这个 邮政 http://blogs.msdn.com/ieinternals/archive/2009/09/19/Private-Domain-Names-and-Public-Suffixes-in-Internet-Explorer.aspx.

其他有趣的花絮:

IE 的 cookie 代码似乎不支持定义 RFC2109 或 RFC2965。

Internet Explorer(包括 IE8)不会尝试支持任何 RFC 饼干。 WinINET(IE 下面的网络堆栈)具有基于 RFC 之前的 Netscape cookie 草案规范的 cookie 实现。

如果我在设置 DOMAIN 属性时没有指定前导点,IE 不在乎吗?

正确的。所有当前版本的浏览器(Chrome、FF、Opera 等)似乎都将前导点视为隐式

From 微软支持 http://support.microsoft.com/kb/2004188(影响 IE 6.0、7.0 和 8.0):

症状:用户打开网页http://服务器名称.xxx.yy http://servername.xxx.yy。该地址的网站设置一个 cookie 并指定“xxx.yy”作为该 cookie 的域。但是,Internet Explorer 不保存cookie 信息。

Cause:出于安全原因,Internet Explorer 不会保存 xxx.yy 等域的 cookie 数据,其中 .yy 是两个字母的国家/地区代码域,三个字母 xxx 是通用顶级域名之一:com、edu、gov、 int、mil、net 或 org。这种形式的域名被视为顶级域名,实际上是通用顶级域名的特定国家/地区版本。出于安全原因,wininet 禁止为此类域设置 cookie。在这种情况下,xxx.yy 实际上是一个顶级域,并以与“.com”相同的方式受到保护。

解决:此行为是设计使然。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 IE8 中为两个字母的域设置 cookie? 的相关文章

随机推荐