【问题标题】:JS Cookie set in 2 places, doesn't overwrite first setJS Cookie 设置在 2 个位置,不会覆盖第一个设置
【发布时间】:2014-08-13 18:39:32
【问题描述】:

我在 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 中不应该有两个 domain 字段。
  • 这是我的问题。它复制而不是覆盖。
  • 请出示您的代码。
  • Cookie 特定于文件夹,除非您使用 path 选项将它们指向父文件夹。
  • 这不是我对path=/所做的吗?

标签: javascript cookies path


【解决方案1】:

所以,我只是错误地使用了 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;
    }
}

【讨论】:

    猜你喜欢
    • 2015-10-28
    • 1970-01-01
    • 2017-06-09
    • 2011-11-06
    • 2022-01-03
    • 1970-01-01
    • 2011-09-24
    • 2011-09-17
    • 2013-11-19
    相关资源
    最近更新 更多