【问题标题】:Setting persistent cookies with javascript使用 javascript 设置持久性 cookie
【发布时间】:2012-01-04 19:47:33
【问题描述】:

我在我的应用程序中发现了一个奇怪的错误,由于我对 Javascript 的经验不足,我无法调试它;

我正在尝试设置一个持久性 cookie,该 cookie 会在设置后一年后消失(主要浏览器中的最大值),但会持续存在并且在浏览器关闭后不会被删除。我一直在使用这个代码:

// Build the expiration date string:
var expiration_date = new Date();
expiration_date.setYear (expiration_date.getYear () + 1);
expiration_date = expiration_date.toGMTString();
// Build the set-cookie string:
var cookie_string = "test_cookies = true; path=/; expires=" + expiration_date;
// Create/update the cookie:
document.cookie = cookie_string;

我注意到,当我使用 cookie 管理器插件时,cookie 有一个 session 标签,并且只有带有这个标签的那些会在浏览器关闭时被删除(其他像 Wordpress 和这样的脚本仍然存在)。

【问题讨论】:

  • 到期日期防止它在浏览器关闭时被删除。这就是他们的目的。

标签: javascript cookies


【解决方案1】:

我将您的语法更改为我的编码风格(顶部的变量,最少的重新转换等),下面的示例在我的本地主机上运行良好。

// Build the expiration date string:
var expiration_date = new Date();
var cookie_string = '';
expiration_date.setFullYear(expiration_date.getFullYear() + 1);
// Build the set-cookie string:
cookie_string = "test_cookies=true; path=/; expires=" + expiration_date.toUTCString();
// Create or update the cookie:
document.cookie = cookie_string;

如果您在生产服务器上遇到问题,请尝试设置 cookie 的域 (www.quirksmode.org/js/cookies.html#link5)

【讨论】:

  • 嗨@pete,你知道我们如何在js-cookie脚本中添加这个持久化吗?谢谢!
  • @Gregdebrick 我不确定您指的是 which js-cookie 脚本,所以不方便。无论如何,你的评论有一个很好的问题!您应该将其作为一个单独的问题提出。 :)
【解决方案2】:

您也可以使用max-age 属性。

cookie_string = "test_cookies=true; path=/; max-age=31536000";
  • 一周:max-age=604800
  • 一个月:max-age=2628000
  • 一年:max-age=31536000

【讨论】:

    【解决方案3】:

    您是否尝试过使用 Date 实例的 getFullYear()setFullYear() 方法而不是 getYear()setYear() ?后者已被弃用,请参阅here

    希望有帮助!干杯。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多