Cookie 过期时间设置为 0 的行为
Cookie 的 expires 或 max-age 设置为 0 时的生命周期
问题
Cookie 的有效时间设置为 0 会怎么样?
解答
当 Cookie 的过期时间设置为 0 时,该 Cookie 会成为会话 Cookie(Session Cookie),其生命周期与浏览器会话绑定。
具体行为:
// 设置过期时间为 0
document.cookie = "username=john; max-age=0";
// 或
document.cookie = "username=john; expires=0";
这种情况下,Cookie 会在浏览器关闭时自动删除,不会持久化到磁盘。它的销毁时间与浏览器 Session 的销毁时间相同。
如果需要设置持久化 Cookie,应该指定具体的过期时间:
// 设置 7 天后过期
const expires = new Date(Date.now() + 7 * 24 * 60 * 60 * 1000);
document.cookie = `username=john; expires=${expires.toUTCString()}`;
// 或使用 max-age(单位:秒)
document.cookie = "username=john; max-age=604800"; // 7天
关键点
- 过期时间为 0 的 Cookie 是会话 Cookie,仅在浏览器会话期间有效
- 浏览器关闭后会自动删除,不会持久化存储
- 与设置了具体过期时间的持久化 Cookie 不同
- 适用于临时数据存储场景
目录