没有过期日期的Javascript Cookie

时间:2009-02-10 14:49:42

标签: javascript cookies

我想设置一个永不过期的cookie。这甚至可能吗?

 document.cookie = "name=value; expires=date; path=path;domain=domain; secure";

我不想让日期真的很大,我只是想知道cookie上的expires参数是否有值告诉它永远不会过期。

感谢。

9 个答案:

答案 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年左右将是安全的。随着时间的推移,软件和硬件将发生变化,可能永远不会适应旧版本(我们现在拥有的东西),因此为未来准备现在

  

请参阅Year 2038 problem

答案 8 :(得分:-3)

只需跳过对象初始值设定项中的 expires 参数即可。它对我来说很好。