![](/img/trans.png)
[英]JavaScript's document.cookie does not replace cookie in the subdomain
[英]Subdomain cookie sent in request Cookie header, but not present in IE JavaScript's document.cookie
我有一个奇怪的问题,正在发送和接收的cookie,但Internet Explorer上的JavaScript无法访问。 Chrome,Firefox,Opera和Safari JavaScript都可以。
发布到“ http://wp.abc.example.com/content/sv2.cgi?id=1234 ”,响应设置Cookie,问题302重定向:
HTTP/1.0 302 Moved Temporarily Location: http://members.abc.example.com/abc/members/0912/07/news01.html Set-Cookie: AID=1495763b4fc6d5f4290e2074ab1092f7; expires=Tue Feb 16 09:33:03 2010 GMT; path=/abc/members/0912/07/news01.html; domain=abc.example.com; ; Set-Cookie: LEADENDDATE=20091218; expires=Tue Feb 16 09:33:03 2010 GMT; path=/abc/members/0912/07/news01.html; domain=abc.example.com; ;
浏览器请求目标页面,包括刚刚发送的cookie。
GET /abc/members/0912/07/news01.html HTTP/1.1 Cookie: AID=1495763b4fc6d5f4290e2074ab1092f7; LEADENDDATE=20091218; Host: members.abc.example.com
运行“javascript:alert(document.cookie);” 在浏览器地址栏中。
在IE和IE上,cookie不在那里。 其他浏览器都很好。 这适用于IE6,7和8。
总而言之,
“wp.abc.example.com”在“abc.example.com”上设置一个cookie,该cookie在“members.abc.example.com”的请求中发送给服务器,但在该页面上的JavaScript不可见。
为什么?
我想也许而不是“abc.example.com”,应该在“.abc.example.com”上设置cookie以允许子域匹配,但即便如此,它也会在“members.abc.example.com”请求标头中发送。
基本上它就像在cookie上设置“HttpOnly”一样,即使从上面显示的Set-Cookie头部示例中,也不包括该标志。 额外的“;” 也许有一些影响?
Eric Law在一段时间内写了一篇关于IE各种cookie处理怪癖的好文章 。 他回答的问题之一似乎可能适用于您的场景:
问题8:HTML DOM document.cookie属性是否有任何限制?
答: [...]
此外,由于底层WinINET InternetGetCookie实现中存在一个模糊的错误,如果使用包含文件名的路径属性设置,IE的document.cookie将不会返回cookie。
[...]
请注意,您的路径不包括文件名:
Set-Cookie:AID = 1495763b4fc6d5f4290e2074ab1092f7; 到期= 2010年2月16日星期二09:33:03 GMT; path = / abc / members / 0912/07 / news01.html ; 域= abc.example.com; ;
Set-Cookie:LEADENDDATE = 20091218; 到期= 2010年2月16日星期二09:33:03 GMT; path = / abc / members / 0912/07 / news01.html ; 域= abc.example.com; ;
我建议你尝试使用无文件名路径设置cookie,看看是否有帮助......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.