我有一个网站,例如example.com,在那里用户可以设置自己的子域(一个用户-一个子域),并上传自己的脚本,例如http://somedomain.example.com/xyzzy.php将映射到/www/somedomain/xyzzy.php
现在,在其中一些域中,Internet Explorer7不能/不能接受cookie。检查了Fiddler:服务器正确地发送了Set-Cookie响应,但cookie从未出现在IE中-对于JS或开发人员工具。在请求时,IE7也不会发送Cookie头。
cookies是为用户的域(例如somedomain.example.com)设置的,路径是/,尝试了不同的过期选项(过去、将来、当前、"0"),不是HttpOnly,不安全。
FF、Opera、Safari和Chrome都能正常工作。
为什么IE会忽略cookie?
发布于 2009-04-27 16:29:07
其中一个子域是否使用了下划线?IE无法接受来自不遵循URI RFC的子域的cookies。
发布于 2009-04-27 16:29:55
根据RFC1035 (域名-实现和规范):
域名必须以字母开头,以字母或数字结尾,并且内部字符只能是字母、数字和连字符。
原来一些域名中有一个下划线( "_“):some_domain.example.com。尽管这违反了RFC,但所有其他浏览器都可以正常工作。
带有下划线的域上的MSIE7会静默丢弃该主机的所有cookie,并拒绝接受新的cookie。
唯一的解决方案是使用符合RFC的域(我已经将所有的“_”替换为“-”,并设置了一个RewriteRule,以便将流量重定向到符合的域)。
发布于 2010-01-25 19:13:26
这个问题不仅适用于域名中的下划线,也适用于以数字开头的域名。所以cookie实际上是一个非标准的域名,这会导致IE拒绝1aaaaaaa.tld。
我只使用www2.1aaaaaaa.tld,然后在.htaccess中为1aaaaaaa.tld和www.1aaaaaaa.tld主机添加重写规则,从而解决了这个问题。不知道这是否真的符合标准的解决方案……但不管怎样,它似乎已经解决了cookie问题。
希望这对某些人有帮助!
https://stackoverflow.com/questions/794243
复制相似问题