【问题标题】:RESTful cookie path fails in IE without trailing slashIE 中的 RESTful cookie 路径在没有斜杠的情况下失败
【发布时间】:2010-01-30 07:29:53
【问题描述】:

我被要求在具有 RESTful URL 而没有尾部斜杠 (.NET MVC) 的页面上构建一个选项卡式部分,例如 http://myhost/books/the-amber-spyglass

为了让选项卡部分对用户更加友好,我希望他们记住在用户四处移动时在每个页面上打开了哪个选项卡,这样如果他们返回到一本书,他们之前在同一个选项卡上的仍然保持打开状态。这是通过设置一个名为“tab”的 cookie 来实现的,该 cookie 的值设置为 tabid,路径设置为它们所在的页面(因此它不会影响其他页面上的选项卡)。到目前为止,您会想到一些非常基本的东西,而且它也确实很好地工作。

输入 Internet Explorer。

在 IE 中,路径 /books/the-amber-spyglass 的 cookie 与上述 URL 不匹配,因此无法正确设置。如果我添加一个尾部斜杠,所以路径是 /books/the-amber-spyglass/ 而是它工作正常 - 但我无法更改我们的 URL 架构,即使我可以“the-amber-spyglass”是一种资源,而不是文件夹。

对于这个肯定非常常见的问题,有人有推荐的解决方案吗?

非常感谢,

JS

【问题讨论】:

    标签: javascript internet-explorer cookies path rest


    【解决方案1】:

    http://blogs.msdn.com/ieinternals/archive/2009/08/20/WinINET-IE-Cookie-Internals-FAQ.aspx

    由于 底层 WinINET InternetGetCookie 实现,IE的document.cookie 如果设置了 cookie 将不会返回 路径属性包含 文件名。

    例如,如果页面设置了 cookie 像这样:

    设置 Cookie: HTTPSet-PathCookie=PASS;path=/check.htm

    ...cookie 将通过 HTTP 发送 请求但不会出现在 document.cookie 集合。

    【讨论】:

    • 感谢您澄清这一点,我已经实现了一个不同的解决方案,其中 cookie 名称是基于 URL 生成的。这远非理想,因为它会在点击一定数量的标签后开始覆盖 cookie(我相信在 IE 中有 20 个)。
    • 我刚刚做了一个测试,在点击了 52 个标签后,根据 IE devtools 中的“cookie 信息”工具,所有的 cookie 仍然存在。这不是我所期望的,因为我在几个地方看到 IE 每个域最多可以存储 20 个 cookie(对于 Firefox 是 50 个)。这是怎么回事?
    • 2007 年 8 月,所有 IE 版本中每个域的 cookie 限制已更改为 50。blogs.msdn.com/ie/archive/2007/08/29/…
    猜你喜欢
    • 2013-01-28
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    相关资源
    最近更新 更多