我们正在向本地运行的服务器发布 AJAX 请求,即
xhr.open("POST", "http://localhost:9000/context/request");
xhr.addHeader(someCustomHeaders);
xhr.send(someData);
正在执行此 javascript 的页面也是从 localhost:9000 提供的,即这看起来完全像一个同源请求。
然而,由于某种原因,谷歌浏览器总是在结果请求中设置一个 Origin 标头,导致我们的服务器基于它是 CORS 请求的错误假设而阻止该请求。
这在 Firefox 中不会发生。
此外,Firefox 和 Chrome 都没有发送 OPTIONS 预检请求,这令人困惑;为什么在没有预先检查的情况下设置 Origin 标头以确保服务器允许 Origin 和 Custom 标头?
有谁知道在这种情况下发生了什么?我们是否误解了 CORS 规范?