2009-12-18 144 views
5

我遇到了一个奇怪的问题,它正在正确发送和接收Cookie,但在Internet Explorer中无法访问JavaScript。 Chrome,Firefox,Opera和Safari JavaScript很好。在请求Cookie中发送Cookie Cookie,但在IE中不存在JavaScript的document.cookie

  1. 邮政 “http://wp.abc.example.com/content/sv2.cgi?id=1234”,响应集饼干,发出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; ; 
    
  2. 浏览器请求的目标页面,包括刚才发送的cookie。

    GET /abc/members/0912/07/news01.html HTTP/1.1 
    Cookie: AID=1495763b4fc6d5f4290e2074ab1092f7; LEADENDDATE=20091218; 
    Host: members.abc.example.com 
    
  3. 运行“javascript:alert(document.cookie);”在浏览器地址栏中。

  4. 在IE和IE浏览器上,cookies不在那里。其他浏览器都很好。这是IE6,7真,和8

在总结

所以,

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

为什么?

我想也许不是“abc.example.com”,应该在“.abc.example.com”上设置cookie以允许子域匹配,但即使如此,它也会在“members.abc.example”中发送。 com“请求标题。

基本上它充当虽然“的HttpOnly”被设置在该cookie,即使从上面所示的Set-Cookie头例如,不包括该标记。额外的“;”也许会有一些影响?

回答

7

Eric Law写了a good article on IE's various cookie-handling quirks回来。他回答的其中一个问题看起来好像适用于您的场景:

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

答:[...]

此外,由于在基础的WinINET InternetGetCookie实现一个不起眼的错误,IE的document.cookie中不会,如果它是用含有路径属性设置返回一个cookie文件名。
[...]

请注意,你的路包括文件名:

的Set-Cookie:AID = 1495763b4fc6d5f4290e2074ab1092f7;到期=星期二2月16日09:33:03 2010 GMT; path =/abc/members/0912/07/news01.html;域= abc.example.com; ;
Set-Cookie:LEADENDDATE = 20091218;到期=星期二2月16日09:33:03 2010 GMT; path =/abc/members/0912/07/news01.html;域= abc.example。COM; ;

我建议你尝试了免费的文件名路径设置中的cookie,看看是否有没有帮助?

+0

谢谢!我们最终为自己弄明白了这一点,但很高兴看到它作为已知错误的写法。 MSDN在cookie处理细节上基本没用。是否有任何有关此问题的Microsoft文档,您知道吗? – ryandenki 2009-12-24 04:01:26

+0

实际上,在我们的情况下,我们确实需要将Cookie作为页面特定的,而不仅仅是路径。当然这只是一个可怕的解决方法,用于禁止在没有我们公司网站的URL中使用查询参数的奇怪策略: http://stackoverflow.com/questions/1956641/any-justification-for-a-policy-that-查询参数 - 应该 - 不被使用的 – ryandenki 2009-12-24 04:17:53