铬改变cookie路径

Man*_*eld 9 javascript cookies jquery google-chrome jquery-ui

我有一个使用与Cookie插件的jQuery UI的标签控件(如演示了Web应用程序(ASP.NET MVC3)在这里).

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

$("#tabs").tabs({ cookie: { path: '/A/' } });
Run Code Online (Sandbox Code Playgroud)

在Firefox中,这可以正常工作.无论"/ A /"(例如"A/B/C")之后的网址是什么,标签控件始终会正确记住上次选择的标签,并在重新加载页面时切换到该标签.

但是,在Chrome(v21)上,浏览器偶尔会添加另一个带有不同路径的标签Cookie.然后我最后得到两个cookie,一个是我最初创建的路径"/ A /",另一个是路径"/ A/B /",这是我目前正在使用的URL.不幸的是,似乎这个"双cookie"导致错误的选项卡有时会在页面刷新时加载,因为这两个cookie似乎有冲突.

有没有办法防止Chrome中的这种行为?我已经尝试了几种编程解决方案(例如,如果路径包含"/ A /",则强制路径为"/ A /",但由于该代码永远不会到达,因此Chrome似乎自动执行此操作).

谢谢您的帮助!

似乎问题是chrome不区分不同路径上具有相同名称的cookie; 所以我在我的应用程序中的其他选项卡控件搞乱了.一旦我给了cookie一个独特的名字,事情就开始正常了!

Eug*_*nov 2

我刚刚将一个示例推送到 GitHub 存储库。看起来它在 Linux 下的 Chrome 21 中运行良好。

第一条路径的截图

第二条路径截图

如果您使用的是 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'
    }
});
Run Code Online (Sandbox Code Playgroud)