使用javascript设置持久性cookie

时间:2012-01-04 19:47:33

标签: javascript cookies

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

我正在尝试设置一个持久性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有会话标记,并且只有具有此标记的cookie在浏览器关闭后被删除(其他像Wordpress和此类脚本仍然存在)

3 个答案:

答案 0 :(得分:21)

我将语法改为我的编码风格(顶部的变量,最小的重新转换等),下面的例子很适合我的localhost。

// 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

答案 1 :(得分:2)

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

希望有所帮助!欢呼声。

答案 2 :(得分:1)

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

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