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

Chrome安全策略为何阻止同域子站的第一方Cookie?

解决方案:同域子域名下Cookie无法存储与携带的问题

核心问题分析

你遇到的情况本质是跨源请求的Cookie携带规则和浏览器安全策略的冲突:虽然app.domain.com和api.domain.com同属根域,但它们属于不同的源(子域名不同),浏览器默认不会在跨源请求中携带Cookie,即使Cookie配置了共享Domain。而禁用web安全模式下浏览器跳过了这些检查,所以Cookie能正常工作。

具体修复步骤

1. 为fetch请求添加credentials: 'include'

fetch API默认的credentials值是same-origin,仅允许同源(协议、域名、端口完全一致)请求携带Cookie。由于你的前端和后端是不同子域名,必须显式开启跨源Cookie携带:

// 修改你的fetch请求配置
fetch('https://api.domain.com/your-api-path', {
  method: 'POST', // 或其他请求方法
  credentials: 'include', // 关键配置:允许跨源携带Cookie
  headers: {
    'Content-Type': 'application/json',
    // 其他请求头
  },
  body: JSON.stringify(yourRequestData)
})

2. 调整Cookie的Domain属性格式

现代浏览器(包括Chrome 80+)推荐直接使用不带前置点的根域名配置Domain,效果与.domain.com一致,但能避免一些潜在的兼容性问题:

Set-Cookie: cookieName=value; Path=/; Secure; HttpOnly; Domain=domain.com; SameSite=None

3. 确认HTTPS证书有效性

确保app和api的HTTPS证书是受浏览器信任的正规证书(不要用自签名证书在生产环境),Chrome会拒绝为不安全的HTTPS站点存储或携带Secure标记的Cookie。

4. 验证Cookie设置的交互触发条件

Chrome对无用户交互(比如页面自动加载时的请求)设置的Cookie有严格限制,确保Cookie是在用户主动操作(如点击登录按钮)的请求响应中设置的。

额外排查点

  • 检查Chrome隐私设置:进入「设置>隐私和安全>Cookie及其他网站数据」,确认未开启「阻止第三方Cookie」,或为domain.com添加例外。
  • 测试Firefox的隐私设置:Firefox的「增强跟踪保护」可能会拦截同根域但不同子域的Cookie,可临时关闭测试。

内容的提问来源于stack exchange,提问作者John Cover

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 23:45:02