【发布时间】: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