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

为何默认CORS模式下浏览器未省略Authorization请求头?

问题解析:默认CORS模式下Authorization头未被省略的原因

你遇到的核心误解是:CORS的credentials选项控制的是浏览器自动注入的凭证,而非开发者手动添加的请求头。

1. credentials: omit的实际作用

credentials: omit(默认模式)的规则是:浏览器不会自动发送用户代理层面的凭证,比如:

  • 自动携带的Cookie
  • 浏览器弹窗提示后输入的HTTP Basic Auth凭证
  • TLS客户端证书

但它不会阻止开发者手动在请求头中添加的Authorization头——只要该请求头通过了预检请求的校验(你的后端设置了allowedHeaders = {"authorization"},所以预检通过),浏览器就会正常发送这个手动设置的头。

2. 关于mode: no-cors的行为

当设置mode: no-cors时,浏览器会强制请求遵循「简单跨域请求」规则,只允许发送简单请求头(包括Accept、Accept-Language、Content-Language、Content-Type等)。Authorization不属于简单请求头,所以会被浏览器自动移除,这是符合规则的。

3. credentials: include时被拦截的原因

当设置credentials: include时,浏览器会认为这是一个带凭证的跨域请求,此时要求后端的Access-Control-Allow-Origin不能是通配符*——而你的后端正好设置了origins = "*",所以浏览器触发了CORS拦截,这完全符合你已知的CORS核心规则。

验证方法

如果想测试credentials: omit是否真的会省略自动凭证,可以做以下操作:

  • 在后端设置需要验证Cookie的接口
  • 在前端不手动设置任何头,而是先在同域下设置Cookie,再发起跨域请求
  • 此时credentials: omit模式下,Cookie不会被携带;credentials: include模式下才会携带(同时需要后端修改Access-Control-Allow-Origin为具体域名并设置Access-Control-Allow-Credentials = true)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 23:27:19