默认情况下,网页只能读取同源的响应。要让网页读取另一个 origin 的响应,服务器必须用 Access-Control-Allow-* 标头主动放行。浏览器负责强制执行:若标头没允许你的 origin,即使服务器有回,浏览器仍挡下读取。
非简单请求(自订标头、JSON 主体、或 GET/HEAD/POST 以外的方法)会先送 OPTIONS 预检;服务器必须允许该 method 与标头,实际请求才会发出。当请求带 credentials 时,通配符全部失效:Access-Control-Allow-Origin 必须是明确的 origin(不能是 *),且 Access-Control-Allow-Credentials 必须为 true。这个「精确配对」正是最常见的 CORS 错误。
关于这个主题的常见疑问与实用解答。
服务器确实有回,但浏览器因为 Access-Control-Allow-* 标头没允许你的 origin(或 method、标头)而拒绝把响应交给你的网页。本工具会指出到底缺哪个标头。
对非简单请求,浏览器会先送一个 OPTIONS 请求,问服务器这个 method 与标头准不准。只有预检通过,实际请求才会发出。
基于安全,当请求带 cookie 或授权时,浏览器禁止使用通配符。你必须回传精确的 origin,并加上 Access-Control-Allow-Credentials: true。
不会。它是纯规则引擎,完全在你的浏览器中运算,不发任何网络请求,你输入的内容也不会离开你的设备。