【问题标题】:chrome changing cookie pathchrome改变cookie路径
【发布时间】:2012-08-04 15:20:04
【问题描述】:

我有一个 Web 应用程序 (ASP.NET MVC3),它使用带有 cookie 插件的 jquery ui 选项卡控件(如 here 所示)。

我在创建选项卡时使用 path 选项设置了 cookie 的路径:

$("#tabs").tabs({ cookie: { path: '/A/' } });

在 Firefox 中,这可以正常工作。无论“/A/”(例如“A/B/C”)之后的 url 是什么,选项卡控件始终正确记住上次选择的选项卡,并在我重新加载页面时切换到它。

但是,在 Chrome (v21) 上,浏览器有时会添加另一个具有不同路径的选项卡 cookie。然后我最终得到了两个 cookie,一个具有我最初创建的路径“/A/”,另一个具有路径“/A/B/”,这是我当前所在的 url。不幸的是,这个“双重 cookie”似乎会导致在页面刷新时有时会加载错误的选项卡,因为这两个 cookie 似乎有冲突。

有什么方法可以防止 chrome 中的这种行为?我尝试了几种编程解决方案(例如,如果路径包含“/A/”,则强制路径指向“/A/”,但由于该代码从未到达,似乎 chrome 会自动执行此操作)。

感谢您的帮助!

似乎问题在于 chrome 无法区分不同路径上具有相同名称的 cookie;所以我在我的应用程序中使用的另一个选项卡控件把事情搞砸了。一旦我给了 cookie 一个唯一的名字,事情就开始正常工作了!

【问题讨论】:

  • 这个问题是否相关? code.google.com/p/chromium/issues/…
  • @say2joe 有趣...看起来我的问题很相似。
  • 你有演示吗?如果在 cookie 定义中未指定路径,则假定当前路径,并且该路径特异性会覆盖您的其他 cookie。您的代码中的某些内容可能会触发未设置的路径。如果该值是硬编码的,那么实际值是多少?是相对的吗?
  • @BrianNickel 正如我的代码所示,我在定义 cookie 时设置了路径。实际值是相对路径,是的。那行是我引用 cookie 的唯一地方,我没有设置它或以任何其他方式更改它。
  • 明确地说,这是一个绝对路径(但相对 URL)。我只是想检查一下,因为我不知道 '../A' 是否可行。

标签: javascript jquery jquery-ui google-chrome cookies


【解决方案1】:

我刚刚将example 推送到 GitHub 存储库。 似乎它在我的 Linux 下的 Chrome 21 中运行良好。

Screenshot of first path

Screenshot of second path

如果您使用的是 jQuery UI >= 1.7,则将具有一些唯一值(例如“my-absolutely-unique-cookie”)的属性“name”添加到您传递的 cookie 对象中,然后看看它是如何进行的:

$("#tabs").tabs({
    cookie: {
        name: 'my-unique-cookie',
        // store cookie for a day, without, it would be a session cookie
        expires: 1,
        path: '/tabs'
    }
});

【讨论】:

  • 看来你所做的正是我不想发生的——我不想让 chrome 设置另一个 cookie,我希望它接受已经存在的那个。我还应该提到,在“A/B”中没有单独的选项卡集,它与“/A/”中存在的选项卡相同。
  • 好的,我刚刚为两个 URL (goo.gl/iLNg2) 设置了相同的 cookie 路径并更新了指向我的屏幕截图的链接 - 你可以看到它运行良好 - 选项卡的状态是共享的在我的 /tabs 路径下的所有页面之间
  • 我不知道我在做什么不同...我在做完全相同的事情,但 chrome 不断为每条新路径创建新的 cookie。
  • 如果您使用的是 jQuery UI >= 1.7,然后将属性“name”添加到您传递的 cookie 对象中,并添加一些独特的值,例如“my-absolutely-unique-cookie”,看看它是如何实现的去。
  • 看起来是这样做的!呃...我觉得很愚蠢...我之前注意到 chrome 似乎无法区分不同路径上的同名 cookie :(。如果您编辑答案以包含您刚刚评论的内容,我将奖励赏金/标记作为答案。
猜你喜欢
  • 2012-11-26
  • 2017-09-10
  • 2012-03-17
  • 1970-01-01
  • 2012-01-22
  • 2023-04-02
  • 2022-10-12
  • 2020-07-18
  • 2012-03-08
相关资源
最近更新 更多