铬更改 cookie 路径

chrome changing cookie path

本文关键字:路径 cookie      更新时间:2023-09-26

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

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

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

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

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

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

感谢您的帮助!

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

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

第一个路径的屏幕截图

第二条路径的屏幕截图

如果你使用的是jQuery UI>= 1.7,那么将属性"name"和一些唯一值(如"my-absobutly-unique-cookie")添加到你传递的cookie对象中,看看它是如何进行的:

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