JavaScript设置的Cookie关闭浏览器即失效,如何最大化延长其有效期?
你当前的Cookie没有指定有效期,默认属于会话Cookie,浏览器关闭后会被自动清理,这是失效的核心原因。只需给Cookie补充max-age或expires属性指定有效时长即可解决:
max-age:单位为秒,直接设置Cookie的有效时长,写法更简洁,主流浏览器均支持expires:值为UTC格式的日期,仅用于兼容IE等极老旧浏览器
代码示例
推荐写法(max-age)
以下示例设置Cookie有效期为1年:
// 31536000秒 = 365天 * 24小时 * 60分钟 * 60秒 document.cookie = 'darkmode=false; SameSite=None; Secure; max-age=31536000';
兼容老旧浏览器写法(expires)
const expireDate = new Date(); // 有效期设置为1年 expireDate.setFullYear(expireDate.getFullYear() + 1); document.cookie = `darkmode=false; SameSite=None; Secure; expires=${expireDate.toUTCString()}`;
注意事项
- 目前主流浏览器对Cookie的最长有效时间限制为2年,设置时长超过2年的会被自动截断为2年,建议不要超过该阈值
Secure属性仅在HTTPS环境下生效,如果你的网站使用HTTP协议,需要删除该属性否则Cookie无法正常写入- 如果仅在同站使用该Cookie,建议把
SameSite=None改为SameSite=Lax,安全性更高 - 用户主动清理浏览器Cookie、浏览器启用自动清理临时数据规则的场景下,Cookie仍会提前失效,这类情况无法通过代码规避
内容的提问来源于stack exchange,提问作者paxxous
相关产品推荐
相关产品推荐

