当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《InternetExplorer忽略某些域上的cookie(无法读取或设置cookie)》经验,为你挑选了3个好方法。

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



1> u07ch..:

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


这是世界上最愚蠢的事情,但是谢谢你我要把我的电脑搞砸了.
需要注意的是:我使用Internet Explorer 11遇到了这个问题,所以即使这么多年后它仍然是一个相关的答案.

2> Piskvor cc-b..:

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

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

原来在他们的一些领域的有一个下划线("_"): some_domain.example.com.虽然这违反了RFC,但所有其他浏览器都能正常工作.

MSIE 7,在带有下划线的域上,默默地丢弃该主机的所有cookie,并拒绝接受新的cookie.

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



3> 小智..:

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

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

希望有人帮助!

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有