Firefox未指定时Cookie最大过期日期自动设为7天问题求助
问题复现
Chrome中可正常设置1年有效期的Cookie,但Firefox中无论使用expires还是max-age参数设置超过7天的Cookie,都会被自动限制为7天。测试代码如下:
代码1:使用expires设置365天有效期
function set_cookie(name, value, expires = 365) { let cookie = name + "=" + value + "; SameSite=None; Secure; path=/; " if (expires !== false) { const date = new Date() date.setTime(date.getTime() + (expires * 24 * 60 * 60 * 1000)) let expiry = "expires=" + date.toUTCString() cookie += expiry } document.cookie = cookie }
代码2:使用max-age设置长期有效期
document.cookie = "consent=true; max-age=300000000; SameSite=None; Secure"
排查方向与解决办法
1. 检查Firefox隐私设置
打开Firefox隐私设置页面(about:preferences#privacy),找到「Cookie和网站数据」模块:
- 若设置为「保留Cookie直到:我关闭Firefox」,会覆盖自定义的过期时间,需改为「保留Cookie直到:它们过期」
- 若选择「自定义」选项,检查是否手动设置了Cookie最大有效期为7天,调整为无限制即可
2. 验证Cookie生命周期配置项
在Firefox地址栏输入about:config,搜索network.cookie.maxLifetime:
- 该配置默认值为
-1(无限制),若被修改为604800(7天对应的秒数),会强制限制所有Cookie的最长有效期,改回-1即可恢复正常
3. 排查增强型跟踪保护影响
若开启了「增强型跟踪保护」的严格模式,Firefox可能会对标记SameSite=None的第三方Cookie施加有效期限制:
- 可将目标网站加入跟踪保护例外列表,或调整跟踪保护级别为标准模式后重新测试
代码正确性确认
两段测试代码的语法和参数均符合规范:
expires参数使用toUTCString()生成了符合HTTP标准的过期时间字符串max-age参数的300000000秒换算后约为9.5年,设置逻辑无问题
内容的提问来源于stack exchange,提问作者neinja
相关产品推荐
相关产品推荐

