javascript中设置cookie过期时间优先用max-age(秒数),expires(gmt字符串)为降级方案;两者共存时max-age生效,ie8及以下仅支持expires;删除需设max-age=0并匹配原path/domain。

在 JavaScript 中设置 Cookie 的过期时间,主要通过 expires 和 max-age 两个属性控制,但它们的用法、优先级和兼容性有明显区别。关键点是:两者不能同时生效,max-age 优先级更高;expires 是 GMT 时间字符串,max-age 是秒数;原生 document.cookie 不直接支持 max-age,需手动拼接。
使用 expires 设置绝对过期时间
expires 接收一个 Date.toUTCString() 格式的 GMT 时间字符串。浏览器据此判断 Cookie 是否过期。
- 必须是完整的 GMT 时间格式(如
"Wed, 01 Jan 2025 00:00:00 GMT"),本地时间或 ISO 字符串无效 - 若设为过去的时间,Cookie 会立即被删除
- 示例:30 分钟后过期
expireDate.setMinutes(expireDate.getMinutes() + 30);
document.cookie = "user=abc; expires=" + expireDate.toUTCString() + "; path=/";
使用 max-age 设置相对存活时长(推荐)
max-age 指定 Cookie 从创建时刻起多少秒后过期,单位为整数秒。它比 expires 更精确、更易维护,且是现代标准(RFC 6265)首选。
- 值为正整数(如
max-age=1800表示 30 分钟) - 值为
0或负数,等效于立即删除该 Cookie - 注意:
document.cookie写入时需显式拼入max-age=...,不识别单独的 JS 属性
expires 与 max-age 的优先级与兼容性
当同一个 Cookie 同时设置了 expires 和 max-age,浏览器以 max-age 为准。但要注意:
- IE 6–8 不支持
max-age,仅认expires;现代浏览器均支持两者 - 如果只写
max-age,旧版 IE 会忽略该字段,退化为 session cookie(关闭浏览器即失效) - 稳妥做法:需要兼容老 IE 时只用
expires;否则优先用max-age,必要时可双写(max-age 生效,expires 作降级)
删除 Cookie 的正确方式
删除 Cookie 并非清空值,而是将其 max-age 设为 0 或 expires 设为过去时间,并确保 path 和 domain 与原设置一致。
- 推荐用
max-age=0,语义明确且跨浏览器稳定 - 务必重复原 Cookie 的作用域参数(如
path=/admin),否则可能删错或失败
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











