Internet Explorer忽略某些域上的cookie(无法读取或设置cookie)

时间:2009-04-27 16:20:37

标签: internet-explorer cookies

我有一个网站,例如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会忽略Cookie?

3 个答案:

答案 0 :(得分:106)

其中一个子域是否使用下划线? IE在接受不遵循URI RFC的子域名中的Cookie时遇到问题。

答案 1 :(得分:51)

根据RFC1035(域名 - 实施和规范):

  

[域名]必须以字母开头,以字母或数字结尾,并且内部字符只包含字母,数字和连字符。

原来其中一些域中有下划线(“_”):some_domain.example.com。虽然这违反了RFC,但所有其他浏览器都能正常工作。

MSIE 7,在带有下划线的域上,默默地删除该主机的所有Cookie ,并拒绝接受新的。

唯一的解决方案是使用符合RFC的域(我用“ - ”替换了所有“_”并设置了RewriteRule,以便将流量重定向到兼容域。)

答案 2 :(得分:13)

该问题不仅适用于域名中的下划线,也适用于以数字开头的域名。所以1aaaaaaa.tld实际上是一个非标准的域名,这将导致IE拒绝cookie。

我仅使用www2.1aaaaaaa.tld解决了这个问题,然后在1aaaaaaa.tld中为www.1aaaaaaa.tld.htaccess主机添加了重写规则。不知道这是否真的符合标准兼容的解决方案....但无论如何,它似乎已经解决了cookie问题。

希望能帮助别人!