我有一个 Web 应用程序 (ASP.NET MVC3),它使用带有 cookie 插件的 jquery ui 选项卡控件(如 here 所示)。
我在创建选项卡时使用路径选项设置 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 一个唯一的名字,事情就开始正常工作了!
最佳答案
我刚刚推送了一个 example到 GitHub 存储库。 它似乎在我的 Linux 下的 Chrome 21 中运行良好。
如果您使用的是 jQuery UI >= 1.7,则向您传递的 cookie 对象添加具有一些唯一值(例如“my-absolutely-unique-cookie”)的属性“name”,然后看看它是如何运行的:
$("#tabs").tabs({
cookie: {
name: 'my-unique-cookie',
// store cookie for a day, without, it would be a session cookie
expires: 1,
path: '/tabs'
}
});
关于javascript - chrome 更改 cookie 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11848862/