设置 Cookie 的 Max-Age 为什么没生效?
我在前端用 JavaScript 设置了一个带 Max-Age 的 Cookie,但发现它好像没起作用,关闭浏览器后 Cookie 还在。我查了文档说 Max-Age 是秒数,应该能控制过期时间,但实际测试时不管设成 60 还是 3600,关掉页面再打开 Cookie 都还在,是不是我写法有问题?
我试过用 expires 代替,但想统一用 Max-Age。下面是我设置的代码:
document.cookie = "token=abc123; Max-Age=60; Path=/; Secure; SameSite=Strict";
这货只认 expires,Max-Age 是 HTTP 响应头 Set-Cookie 里的特性,浏览器端的 document.cookie API 不吃这一套。
改一下:
或者如果你想简洁点,直接用分钟:
等等,max-age 全小写试试?不过说实话,document.cookie 对大小写也不太敏感,主要还是 expires 靠谱。
如果你真想在浏览器端用 Max-Age,只能通过服务器设置响应头来实现,Set-Cookie: token=abc123; Max-Age=60; Path=/; Secure; SameSite=Strict 这样是可以的。
前端 JS 就死了用 expires 这条心吧。