You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firefox未指定时Cookie最大过期日期自动设为7天问题求助

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 14:12:46