铬改变cookie路径

时间:2012-08-07 15:07:22

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

我有一个Web应用程序(ASP.NET MVC3),它使用jquery ui tab控件和cookie插件(如演示here)。

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

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

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

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

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

感谢您的帮助!

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

1 个答案:

答案 0 :(得分:2)

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

Screenshot of first path

Screenshot of second path

如果您正在使用jQuery UI> = 1.7,那么将属性“name”添加到您正在传递的Cookie对象中,并使用“my-absolute-unique-cookie”之类的唯一值,并查看其结果:

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