我正在尝试设置cookie,该cookie在关闭浏览器后将持续存在。尽管每次关闭浏览器,cookie都会消失。我以为即使关闭浏览器也应该保留cookie?除非指定要在一段时间后删除?
例如:
console.log("cookies ", document.cookie)
document.cookie = "some_cookie=true; max-age=31536000";
首次使用此JS代码打开页面,它将打印cookies
。
刷新浏览器后,它会打印cookies some_cookie=true
关闭浏览器并再次打开同一页面后,它会打印cookies
。
我在Firefox 65.0.2 (64-bit), Chrome 72.0.3626.109 (Official Build) (64-bit) and Chromium 71.0.3578.98 (Official Build) Built on Ubuntu , running on Ubuntu 16.04 (64-bit)
上进行了测试(对于Chrome和Chromium,必须使用http服务器,因为如果直接打开原始html文件,则根本不允许设置cookie)。
结果都是一样的,关闭浏览器后,我的cookie被删除。我还检查了关闭浏览器时是否有清除cookie的选项,但未启用。
我在这里做错什么了吗?还是cookie已过时,我应该坚持使用localStorage
?
P.S。我尝试使用max-age
,expires
或根本不使用它们,但是结果是相同的。
答案 0 :(得分:0)
对我来说,有效的方法是在存储cookie时指定max-age
。但是在测试时,我也不得不使用Web服务器来提供我的html文件,因为直接在浏览器中打开纯html文件并不能使其存储到指定的持续时间。即使它说它将在某个日期到期,它仍会在关闭浏览器时删除cookie(这有点不一致)。
因此,默认行为是它在会话关闭时失效,要更改该时间,需要通过expires
或max-age
属性指定持续时间。
根据Mozzila文档:“如果既未过期也未指定max-age,则它将在会话结束时过期。”
https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie#Write_a_new_cookie