Firefox中Ajax(XMLHttpRequest)请求未发送Cookie问题求助
Firefox 104+的策略调整说明
Firefox从104版本开始,默认启用了**Total Cookie Protection(全面Cookie保护)**功能,该功能会对第三方Cookie进行分区隔离。即使你的Cookie设置了SameSite=None; Secure,只要请求发起站点与目标站点不属于同一分区,Cookie就不会随跨域请求发送。这是Firefox为提升隐私保护做出的策略调整,Chrome和Safari目前的默认隐私策略未完全对齐这一规则,所以你的代码在其他浏览器能正常工作。
可调整的Firefox设置项
如果是测试场景需要临时恢复原有行为,可以通过以下步骤修改配置:
- 在Firefox地址栏输入
about:config,确认风险提示后进入配置页面。 - 搜索并调整以下关键配置:
privacy.totalCookieProtection.enabled:设置为false,直接关闭全面Cookie保护功能。network.cookie.cookieBehavior:将默认值5改为4(禁用Cookie分区,但保留基础SameSite规则),若需更宽松的规则可改为0(不推荐生产环境使用)。network.cookie.sameSite.noneRequiresSecure:确保值为true(你的场景已满足Cookie带Secure标识,此值默认即为true)。
额外排查要点
- 确认请求发起页面为HTTPS协议:
SameSite=None的Cookie仅允许在HTTPS环境下发送,HTTP页面发起的跨域请求即使配置正确也无法携带Cookie。 - 检查Cookie的Domain属性:确保Domain设置与目标站点域名匹配,避免因域名范围错误导致Cookie无法匹配发送。
- 服务端
Access-Control-Allow-Origin必须为具体域名:不能使用*通配符,否则Access-Control-Allow-Credentials: true会失效,这一点你已配置正确,可忽略。
内容的提问来源于stack exchange,提问作者mbakereth
相关产品推荐
相关产品推荐

