API设置的Cookie为何在不同域名网站的Chrome DevTools中可见?
问题原因解析
这不是浏览器Bug,而是Chrome/Brave浏览器开发者工具的显示逻辑特性,结合跨域请求的Cookie发送规则导致的,具体拆解如下:
1. Cookie归属与DevTools显示逻辑的差异
你看到的user Cookie,其domain属性明确设置为myapi.com,本质上存储在浏览器的myapi.com域名Cookie池中,并不属于a.com或b.org。
Chrome DevTools的Application面板在展示当前站点(如b.org)的Cookie时,会额外列出当前页面有网络交互的第三方域名下的所有Cookie——这是DevTools的人性化设计,方便开发者快速查看当前页面涉及的所有跨域Cookie,但这只是显示层面的整合,不代表这些Cookie属于当前站点。
2. Cookie未发送至myapi.com的原因
网站B调用myapi.com的接口时未携带该Cookie,核心原因是跨域请求默认不携带凭证:
- 页面发起跨域请求时,浏览器默认不会自动携带第三方Cookie(即使Cookie设置了
SameSite=None; Secure)。 - 只有当请求明确指定要携带凭证时,浏览器才会发送对应的Cookie:
- 使用
fetchAPI时,需添加credentials: 'include'参数; - 使用
XMLHttpRequest时,需设置xhr.withCredentials = true; - 使用HTML表单时,需添加
credentials="include"属性。
- 使用
由于你的网站B仅访问公开接口,可能未配置携带凭证的参数,所以浏览器不会主动发送user Cookie。
内容的提问来源于stack exchange,提问作者bladekp
相关产品推荐
相关产品推荐

