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