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

为何使用fetch({credentials: 'include'})跨域请求未携带Cookie?

问题分析与解决

核心问题出在浏览器对未指定SameSite属性的Cookie的默认处理,以及跨域请求的Cookie规则:

  • 现代浏览器(Chrome 80+、Firefox 69+等)会自动将未显式设置SameSite属性的Cookie视为SameSite=Lax。Lax模式的规则是:仅在顶级导航请求(比如用户点击链接跳转页面)中才会携带跨域Cookie,而通过fetch/XHR发起的跨域AJAX请求不属于顶级导航,因此浏览器不会携带这类Cookie。
  • 即使你手动将Cookie的SameSite设为None,还必须同时设置Secure属性——因为现代浏览器要求SameSite=None的Cookie必须通过HTTPS传输(即标记为Secure),否则会直接拒绝存储或发送该Cookie。你当前设置的Cookie是非Secure的,所以即使修改SameSite也无法生效。

验证与修正方法

如果要让跨域fetch请求携带这个Cookie,你需要在设置Cookie时显式指定SameSite=None和Secure属性:

document.cookie = 'foo=bar; SameSite=None; Secure'

设置完成后,再从bing.com发起带credentials: 'include'的fetch请求,浏览器就会携带该Cookie了。

另外需要注意:SameSite=None仅适用于跨域场景,且必须配合Secure,如果是HTTP站点(非HTTPS),无法使用SameSite=None,浏览器会拒绝这类Cookie。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:40:35