代码之家  ›  专栏  ›  技术社区  ›  Kris Walker

IE 6、7和8中缺少cookie

  •  0
  • Kris Walker  · 技术社区  · 16 年前

    我正在向浏览器发送两个cookie。一个是1年后过期的浏览器标识符,另一个是没有过期的会话跟踪器。新请求的响应头如下所示

    HTTP/1.1 200 OK
    Content-Type: text/html; charset=utf-8
    X-XSS-Protection: 0
    ETag: "b502a27282a5c621f34d522c3fcc8e3e"
    Set-Cookie: bid=ahFmaXJld29ya3Njb21wdXRlcnIPCxIHQnJvd3NlchimigcM; expires=Fri, 12-Aug-2011 05:21:55 GMT; Path=/
    Set-Cookie: rid=1281569589; Path=/about
    Expires: Wed, 11 Aug 2010 23:33:09 GMT
    Cache-Control: private, max-age=345600
    Date: Wed, 11 Aug 2010 23:33:09 GMT
    

    我试图从页面上的JavaScript访问这两个cookie。

    在Firefox和Chrome文档中。cookie给了我这个

    "rid=1281568223; bid=ahFmaXJld29ya3Njb21wdXRlcnIPCxIHQnJvd3Nlchj2nAYM"
    

    在IE6,IE7,IE8文件中。cookie只给了我这个

    "bid=ahFmaXJld29ya3Njb21wdXRlcnIPCxIHQnJvd3Nlchj2nAYM"
    

    我的rid cookie中的“path”属性是否会导致IE失效,还是缺少了过期日期(我认为这应该是可选的)?我想这并不是因为我设置了不止一个cookie,因为这一直都在进行。

    3 回复  |  直到 16 年前
        1
  •  3
  •   Alexis Pigeon Shawn Skelton    13 年前

    IE只允许你在子目录中访问这些cookies!因此,如果您将cookie的路径设置为be/about,而您的页面实际上是/about,那么您将无法访问它。

    因此,对于IE来说,你似乎可以在/about like/about/us下面的页面上访问cookie,但不能在关于自身的页面上访问cookie。想象一下:/

        2
  •  0
  •   trev    12 年前

    Alexis和Rishi我想他们在这个位置上。这是我在网上找到的唯一一个关于IE如何使用路径处理cookies的信息。多疼的球啊!他又来了。

    顺便说一句,至少在IE 11中,它会在完整路径上执行“从开始”比较,因此可以在“/about”页面上访问设置路径为“/abou”的cookie。虽然在我目前的项目中,这并不能让我感到安慰,因为我不能假设从路径末端去掉一个字符就能可靠地识别站点中的唯一路径。

        3
  •  -1
  •   Steve L    15 年前

    我对IE也有类似的问题。我设置了三个没有路径的cookie(因此假设为“/”)。我在自己的机器上的开发环境中运行。当我以 http://localhost/page.aspx ,我得到了预期的结果,我的javascript可以找到cookies,但是,如果我加载的页面与 http://mymachine.mydomain.com/page.aspx 我可以(在调试器中)看到相同的三个cookie被添加到响应中,但是当我进入寻找它们的javascript函数时,我的所有cookie都是空的。不用说,这在FireFox上运行正常。