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

浏览器何时会拒绝CORS请求?预检阶段还是响应返回后?

CORS拒绝的触发时机

CORS拒绝会在两个不同阶段触发,具体取决于请求的类型:

1. 预检请求阶段(针对非简单请求)

如果请求属于非简单请求(比如使用PUT/DELETE方法、携带自定义请求头、Content-Type为application/json等),浏览器会先发送一个OPTIONS类型的预检请求到目标服务器。

  • 若服务器返回的预检响应缺少Access-Control-Allow-Origin、Access-Control-Allow-Methods或Access-Control-Allow-Headers等必要头信息,或者这些头的取值与请求的实际参数不匹配,浏览器会直接阻断后续的实际请求,此时就会触发CORS拒绝,实际请求根本不会发送到服务器。

2. 实际请求响应返回后(针对简单请求)

对于简单请求(比如使用GET/POST方法、仅携带Accept、Accept-Language等允许的标准头、Content-Type为text/plain、multipart/form-data或application/x-www-form-urlencoded),浏览器会直接发送实际请求。

  • 当服务器返回响应后,浏览器会检查响应头中的Access-Control-Allow-Origin:如果这个头不存在,或者取值不包含当前页面的域名,浏览器就会触发CORS拒绝。此时请求已经到达服务器并得到响应,但浏览器会把响应拦截下来,不让前端代码读取。

需要明确的是:浏览器实施CORS的核心是保护前端代码的安全性,并非完全阻止请求发送——简单请求的请求实际已经发出,只是响应被拦截;非简单请求则会在预检失败时直接不发送实际请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 21:22:05