我正在尝试设置在浏览器关闭后仍保留的 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 的选项,但它没有启用。
我在这里做错了什么吗?或者 cookies 已经过时了,我应该坚持 localStorage
?
附注我尝试使用 max-age
, expires
或者根本不使用它们,但结果是相同的。
最佳答案
对我来说,有效的方法是在存储 cookie 时指定 max-age
。而且在测试时我必须使用 Web 服务器来提供我的 html 文件,因为直接在浏览器上打开纯 html 文件不会使其存储到指定的持续时间。即使它说它将在某个日期过期,它仍然会在浏览器关闭时删除 cookie(这有点不一致)。
因此,默认行为是 session 关闭时过期,要更改它,需要通过 expires
或 max-age
属性指定一些持续时间。
根据 Mozzila 文档:“如果既没有过期也没有指定 max-age,它将在 session 结束时过期。”
https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie#Write_a_new_cookie
关于Javascript - 浏览器关闭后cookie会被清除吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55207362/