设置 Cookie 的 Max-Age 为什么没生效?

UE丶芸倩 阅读 3

我在前端用 JavaScript 设置了一个带 Max-Age 的 Cookie,但发现它好像没起作用,关闭浏览器后 Cookie 还在。我查了文档说 Max-Age 是秒数,应该能控制过期时间,但实际测试时不管设成 60 还是 3600,关掉页面再打开 Cookie 都还在,是不是我写法有问题?

我试过用 expires 代替,但想统一用 Max-Age。下面是我设置的代码:

document.cookie = "token=abc123; Max-Age=60; Path=/; Secure; SameSite=Strict";
我来解答 赞 0 收藏
二维码
手机扫码查看
1 条解答
端木红爱
兄弟,document.cookie 根本不支持 Max-Age 这属性,别挣扎了。

这货只认 expires,Max-Age 是 HTTP 响应头 Set-Cookie 里的特性,浏览器端的 document.cookie API 不吃这一套。

改一下:

// 用 expires 代替
const expires = new Date(Date.now() + 60 * 1000).toUTCString();
document.cookie = token=abc123; expires=${expires}; Path=/; Secure; SameSite=Strict;


或者如果你想简洁点,直接用分钟:

document.cookie = "token=abc123; max-age=60; Path=/; Secure; SameSite=Strict";


等等,max-age 全小写试试?不过说实话,document.cookie 对大小写也不太敏感,主要还是 expires 靠谱。

如果你真想在浏览器端用 Max-Age,只能通过服务器设置响应头来实现,Set-Cookie: token=abc123; Max-Age=60; Path=/; Secure; SameSite=Strict 这样是可以的。

前端 JS 就死了用 expires 这条心吧。
点赞
2026-03-14 14:09