无过期日期的Javascript Cookie

无过期日期的Javascript Cookie,javascript,cookies,Javascript,Cookies,我想设置一个永不过期的cookie。这可能吗 document.cookie = "name=value; expires=date; path=path;domain=domain; secure"; 我不想让日期过大,我只是想知道cookie上是否有expires参数的值告诉它永不过期 谢谢。没有。那是不可能的。最好的“方法”是将过期日期设置为2100年。没有语法来描述您想要的内容。未设置expires会导致cookie在会话结束时过期。唯一的选择是选择一些任意大的值。请注意,有些浏览器

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

 document.cookie = "name=value; expires=date; path=path;domain=domain; secure";
我不想让日期过大,我只是想知道cookie上是否有expires参数的值告诉它永不过期


谢谢。

没有。那是不可能的。最好的“方法”是将过期日期设置为2100年。

没有语法来描述您想要的内容。未设置expires会导致cookie在会话结束时过期。唯一的选择是选择一些任意大的值。请注意,有些浏览器在2038年之后的日期(当unix epoch time超过32位int时)出现问题。

您可以将cookie设置为一个月或某个日期的过期日期,然后在用户每次再次访问网站时重新分配cookie。

您可以执行以下操作:

附言


当然,如果人类在第10000年的第一分钟仍然使用您的代码,就会出现问题:)

如果您不设置过期日期,cookie将在用户会话结束时过期。我建议使用unix纪元时间之前的日期将扩展传递的32位整数。要将其放入cookie中,您将使用
document.cookie=“randomCookie=true;expires=Tue,2038年1月19日03:14:07 UTC;
,假设
randomCookie
是您正在设置的cookie,并且
true
是其各自的值。

如果您打算仅从客户端读取数据,您可以使用本地存储。
只有当浏览器的缓存被清除时,它才会被删除。

所有cookie都会根据cookie过期,您可以设置的最大值为

 2^31 - 1 = 2147483647 = 2038-01-19 04:14:07
所以cookie的最长生存时间是

$.cookie('subscripted_24', true, { expires: 2147483647 });

你就是不能。没有确切的代码可以用来设置永久cookie,但可以使用旧的技巧,比如
当前时间+10年

请注意,2038年1月以后的任何日期都将注定你会成为Cookie的牺牲品(32位int)将立即被删除。希望在不久的将来能有一个奇迹被修复。对于64位int
2110
的年份将是安全的。随着时间的推移,软件和硬件将发生变化,可能永远不会适应旧的(我们现在拥有的)所以现在就为未来做好准备


通过将cookie设置为任意日期加上比当前年份多一个日期,可以使cookie永不结束,如下所示:

var d = new Date();    
document.cookie = "username=John Doe; expires=Thu, 18 Dec " + (d.getFullYear() + 1) + " 12:00:00 UTC";


你为什么不想把日期弄大?把日期弄大让我觉得自己在作弊。如果这是唯一的办法,我想我必须把日期弄大。准确地说,是2038-01-19,03:14:08 UTC。只是想澄清一下:这是一条规则,在每个浏览器中都是一样的吗?这意味着如果我不设置过期日期,cookie将持续仅到会话结束。未使用
Expires
Max Age
指令创建的cookie是会话cookie:它在客户端关闭时被删除。但是,web浏览器可以使用会话还原,这会使大多数会话cookie永久化,就像浏览器从未关闭一样。()只剩下四年了。希望你更新了饼干。2020年——CookiePocalypsedan之年,这一年越来越近了,我希望你的代码已经更新。现在它被编辑到2030年,我们将把我们的厄运再推迟10年。基本上,在2038年1月19日,丘伊将坐在千年隼号上抱怨饼干政策银河地图API再一次…这个数字对我来说不起作用。经过一点尝试和错误,我能使用的最高数字是99983090(expires=Fri,9月12日275760 18:10:24 GMT)。任何更高的数字都返回“无效日期”“如果您将一个数字作为expires参数传递给jquery cookie或js cookie,则从现在起,它将被视为过期天数。如果你想要一个固定的日期,你必须传递一个日期对象。上面的代码使用了一个插件,这个插件已经被废弃了。对于vanilla JS:
document.cookie='subscripted_24=true;expires='+新日期(2147483647*1000).toutString()你确定今天是星期五吗?*对我来说不起作用。跟我一起去。我写了一张票,要在2030年回来看看是否有解决办法。我想你没有意识到,那就是2920亿years@GustvandeWal那么是吗?我已经读过了。我甚至在我的答案中加入了这个链接。从你的答案来看:对于64位整数,2110年左右是安全的。这似乎很可疑,就像你期望64位计算机的计数是32位计算机的两倍(1970->2035->2110)@GustvandeWal如果我的话听起来可疑,很抱歉。也许这不是用英语表达的最好方式。但是,嘿,我没有预料到或者想到你刚才说的那种想法。一个小提示:如果我们使用33位处理器,那么2110年就有意义了。或者浏览器关闭或者计算机关闭down@RedwolfPrograms从何时开始,当浏览器关闭或计算机关闭时,本地存储被清除?@IgorJerosimićOops!我想我认为是因为我的一个网站有一个bug…它会在一年后过期,而不是无限期的(AFAIK)。这是设置无休止的cookies的正确答案。如果您需要考虑到用户从未关闭过站点,您可以通过任何操作或在特定时间后实现更新cookie的附加条件。
var d = new Date();    
document.cookie = "username=John Doe; expires=Thu, 18 Dec " + (d.getFullYear() + 1) + " 12:00:00 UTC";