JavaScript-PHP SETCOOKIE 诡异问题

发布于 2016-11-21 23:47:29 字数 419 浏览 1305 评论 4

之前在工作中遇到的问题,至今不明白,来问问。
我在www.xx.cn 域下给 .xx.cn 父域写cookie 一直失败,无法在 xxx.xx.cn 下读出
但是如果 "xx.cn" 的长度增加一位则可以
如:
www.xxx.cn 给 .xxx.cn 域下写ok

这个是什么原因,还是说w3c有特殊约定?

描述失败。。

之前 FF 版本底的时候
http://user.qjp.jj.cn/cc.php 访问这个文件一直没cookie
目前 有了

IE 6 依然没

<?php
print_r($_COOKIE);
setcookie('bac','aaa',time()+13600,'/','.jj.cn',0);
?>
~

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

甜柠檬 2017-06-28 18:52:14

对于cookie domain,
".xx.cn"只能在二级域名以及"www.xx.cn"下有效
"xx.cn"则可以在xx.cn主域名之下的多级子域名有效

所以去掉.xx.cn中最前面的那个.

参考:PERSISTENT CLIENT STATE HTTP COOKIES

Only hosts within the specified domain can set a cookie for a domain and domains must have at least two (2) or three (3) periods in them to prevent domains of the form: ".com", ".edu", and "va.us". Any domain that fails within one of the seven special top level domains listed below only require two periods. Any other domain requires at least three. The seven special top level domains are: "COM", "EDU", "NET", "ORG", "GOV", "MIL", and "INT".

用以下方式解决IE的问题:ie6/chrome/firefox下测试通过
1.p3p
2.setcookie的时候不要写domain

<?php
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');

print_r($_COOKIE);
setcookie('bac','aaa',time()+13600,'/','',0);
?>

归属感 2017-04-06 08:01:25

还有个原因是因为IE内核限制了iframe方式的cookie传递,防止XSS(跨站)攻击的。
因为我们可以在没有做特殊字符过滤的表单中填入<iframe src=http://我们的空间/xss.htm>,而xss.htm代码中写入获得Cookie的代码。这样Cookie就被盗取了。
所以微软给IE内核做限制了,但session是可以通过iframe方式传递的。

泛泛之交 2017-03-22 16:02:41

我也碰到这个问题了,老实说我没有解决他
用了另外一个方式绕过去了
改用php输出js,用js写cookie

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文