我在我的应用程序中发现了一个奇怪的错误,由于我对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和此类脚本仍然存在)
答案 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";