在请求cookie头中发送的子域cookie,但不存在于IE JavaScript';s document.cookie

在请求cookie头中发送的子域cookie,但不存在于IE JavaScript';s document.cookie,javascript,cookies,cross-browser,Javascript,Cookies,Cross Browser,我对cookies有一个奇怪的问题,cookies被正确地发送和接收,但是Internet Explorer上的JavaScript无法访问。Chrome、Firefox、Opera和SafariJavaScript都不错 发布到“”,响应集cookie,问题302重定向: HTTP/1.0 302 Moved Temporarily Location: http://members.abc.example.com/abc/members/0912/07/news01.html Set-Cook

我对cookies有一个奇怪的问题,cookies被正确地发送和接收,但是Internet Explorer上的JavaScript无法访问。Chrome、Firefox、Opera和SafariJavaScript都不错

  • 发布到“”,响应集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; ;
    
  • 浏览器请求目标页面,包括刚刚发送的cookies

    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,饼干不在那里。其他浏览器也可以。IE6、7和8也是如此

  • 所以总而言之,

    “wp.abc.example.com”在“abc.example.com”上设置一个cookie,该cookie在“members.abc.example.com”上的请求中发送到服务器,但该页面上的JavaScript不可见

    为什么?

    我想应该将cookie设置为“.abc.example.com”以允许子域匹配,而不是“abc.example.com”,但即使如此,它还是在“members.abc.example.com”请求头中发送

    基本上,它的行为就像在cookie上设置了“HttpOnly”,即使在上面显示的set cookie头示例中,该标志不包括在内。额外的“;”可能有一些效果吗?

    埃里克·劳不久前写道。他回答的问题之一似乎适用于您的情景:

    问题8:HTML DOM document.cookie属性有任何限制吗

    A:[…]

    此外,由于基础WinINET InternetGetCookie实现中存在不明错误,IE的document.cookie如果设置了包含文件名的path属性,则不会返回cookie。
    [……]

    请注意,您的路径确实包括文件名:

    设置Cookie:AID=1495763b4fc6d5f4290e2074ab1092f7;expires=2010年2月16日星期二09:33:03 GMT;path=/abc/members/0912/07/news01.html;domain=abc.example.com
    设置Cookie:LEADENDDATE=20091218;expires=2010年2月16日星期二09:33:03 GMT;path=/abc/members/0912/07/news01.html;domain=abc.example.com


    我建议您尝试将cookie设置为无文件名路径,看看这是否有帮助…

    谢谢!我们最终自己解决了这个问题,但很高兴看到一个写在上面的已知bug。MSDN在处理cookie的细节上基本上是无用的。您是否知道有关此问题的任何Microsoft文档?实际上,在我们的案例中,我们确实需要cookie特定于页面,而不仅仅是路径。当然,对于禁止在没有我们公司网站的情况下在URL中使用查询参数的奇怪政策来说,这只是一个可怕的解决办法: