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 不同
  • 适用于临时数据存储场景