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

浏览器自动添加的特定请求头是否不会触发CORS预检请求?

浏览器自动添加的特定请求头是否不会触发CORS预检请求?

这个问题问得很精准!答案是:是的,这完全符合预期行为。

背后的原因和CORS预检的触发逻辑密切相关:

  • CORS预检(OPTIONS请求)的核心作用,是校验开发者主动发起的跨域请求是否符合服务器的允许规则。只有当请求包含「开发者主动添加的非CORS安全列表头」、使用非安全HTTP方法,或者有其他不符合安全规范的配置时,才会触发预检。
  • 当浏览器出于自身缓存机制自动添加If-None-Match或If-Modified-Since这类头时,这些操作属于浏览器内部的默认缓存管理行为,并不被视为「开发者主动添加的自定义请求头」,因此不会触发CORS预检。这类浏览器原生的缓存优化行为,被默认归为安全范畴,无需额外校验。
  • 而当你手动在fetch的配置里添加If-None-Match或If-Modified-Since头时,情况就不一样了:此时这些头会被判定为「开发者主动注入的非安全列表头」(这两个头确实不在CORS安全请求头列表中),所以浏览器会先发起OPTIONS预检请求,确认服务器是否允许跨域请求携带这些头。

举个直观的对比:

  • 浏览器自动添加头时,网络请求面板里只会看到目标请求(比如GET);
  • 手动添加头时,会先出现一个OPTIONS请求,之后才会发起目标请求。

备注:内容来源于stack exchange,提问作者David Jeong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 09:38:00