我遇到了一个奇怪的问题,即正在发送和接收的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标头示例中,也不包括该标志。额外的“;”也许有一些影响?
答案 0 :(得分:7)
问题8:HTML DOM document.cookie属性是否有任何限制?
A: [...]
此外,由于底层WinINET InternetGetCookie实现中存在一个模糊的错误,如果使用包含文件名的路径属性设置,IE的document.cookie将不会返回cookie。
[...]
请注意,您的路径执行包含文件名:
Set-Cookie:AID = 1495763b4fc6d5f4290e2074ab1092f7;到期= 2010年2月16日星期二09:33:03 GMT;路径= / ABC /构件/ 0912/07 /的 news01.html 强>;域= abc.example.com; ;
Set-Cookie:LEADENDDATE = 20091218;到期= 2010年2月16日星期二09:33:03 GMT;路径= / ABC /构件/ 0912/07 /的 news01.html 强>;域= abc.example.com; ;
我建议您尝试使用无文件名路径设置Cookie,看看是否有帮助......