我想设置一个永不过期的cookie。这甚至可能吗?
document.cookie = "name=value; expires=date; path=path;domain=domain; secure";
我不想让日期真的很大,我只是想知道cookie上的expires参数是否有值告诉它永远不会过期。
感谢。
答案 0 :(得分:136)
不。无法做到。这样做的“方式”就是将到期日期设为2030年。
答案 1 :(得分:95)
没有你想要的语法。未设置过期会导致cookie在会话结束时到期。唯一的选择是选择一些任意大的值。请注意,某些浏览器在2038年之后的日期出现问题(当unix纪元时间超过32位时)。
答案 2 :(得分:50)
您可以在Mozilla docs上执行示例:
document.cookie = "someCookieName=true; expires=Fri, 31 Dec 9999 23:59:59 GMT";
P.S
当然,如果人类在10000年的第一分钟仍然使用你的代码,那将会出现问题:)
答案 3 :(得分:11)
所有Cookie都会根据Cookie specification到期,您可以设置的最大值为
2^31 - 1 = 2147483647 = 2038-01-19 04:14:07
所以最长cookie生命时间是
$.cookie('subscripted_24', true, { expires: 2147483647 });
答案 4 :(得分:8)
您可以在一个月或某事的到期日期设置Cookie,然后在每次用户再次访问网站时重新分配Cookie
答案 5 :(得分:8)
如果您未设置过期日期,则Cookie将在用户会话结束时到期。我建议在unix纪元时间之前使用日期将延伸通过一个32位整数。要将其添加到Cookie中,您可以使用document.cookie = "randomCookie=true; expires=Tue, 19 Jan 2038 03:14:07 UTC;
,假设randomCookie
是您设置的Cookie,true
是它的相应值。
答案 6 :(得分:1)
如果您只想从客户端读取数据,则可以使用本地存储。 仅在清除浏览器缓存时才删除它。
答案 7 :(得分:1)
你只能' 。没有确切的代码可用于设置永久cookie,但旧的技巧会做,如SELECT * FROM Time_Table A WHERE NOT EXISTS(
SELECT 1 FROM Time_Table B
WHERE A.timeStamp > B.timeStamp
AND abs(TIMESTAMPDIFF(s,B.timeStamp,A.timeStamp)) > 90
)
。
请注意,current time + 10 years
以外的任何日期都将注定您的Cookie( 32位整数)将立即被删除。希望奇迹能在不久的将来得到解决。对于 64位整数,January 2038
年左右将是安全的。随着时间的推移,软件和硬件将发生变化,可能永远不会适应旧版本(我们现在拥有的东西),因此为未来准备现在。
答案 8 :(得分:-3)
只需跳过对象初始值设定项中的 expires 参数即可。它对我来说很好。