JS Cookie设置在2个地方,不覆盖第一个设置

JS Cookie set in 2 places, doesn't overwrite first set

本文关键字:设置 覆盖 第一个 Cookie 2个 JS      更新时间:2023-09-26

我在2个不同的页面上使用相同的脚本,设置相同的cookie。我的假设是,即使这两个页面的路径(稍微)不同,它们也会简单地覆盖cookie,而不是在其中复制条目。

我的第一页路径是:

example.com/classifieds/businesses

我的第二页路径是:

example.com/classifieds/businesses/search

所以,我的问题是,cookie是否依赖于页面;我可以强制它们覆盖现有的值,而不是将它们自己的特定于页面的值写入cookie吗?

这是我的cookie看起来像重复的:

domain=.example.com; path=/; bdView=column; bdView=detail; domain=.example.com;

设置域名的代码(在头文件中)

var domain = window.location.host.split(/'.(.+)/)[1];
document.cookie = "domain=." + domain;
document.cookie = "path=/";

设置bdView的代码(这是在一个单独的js文件中,我包括在两个页面中)

function setCookie(view) {
    switch (view) {
        case "column":
            document.cookie = "bdView=column";
            break;
        case "list":
            document.cookie = "bdView=list";
            break;
        case "detail":
            document.cookie = "bdView=detail";
            break;
    }
}

所以,我只是用错了cookie。我认为这个领域&路径只是它们自己的东西,但是你实际上应该用你想要设置的东西来设置它们。

所以,它应该是这样的:

function setCookie(view) {
    var domain = window.location.host.split(/'.(.+)/)[1];
    switch (view) {
        case "column":
            document.cookie = "bdView=column; path=/; domain=" + domain;
            break;
        case "list":
            document.cookie = "bdView=list; path=/; domain=" + domain;
            break;
        case "detail":
            document.cookie = "bdView=detail; path=/; domain=" + domain;
            break;
    }
}