所以 - 如果我通过我的浏览器example.host.com访问我的远程服务器上的URL,我会收到一些JSON - 很棒。
如果我将完全相同的URL放入某个javascript中,该javascript会从我本地计算机上的服务器提供的页面中生成XMLHttpRequest,那么我将得到任何内容,status=0
和statusText=null
。相关事实:
access-control-allow-origin: '*'
referer: "http://localhost:2154/HV"
和origin: "http://localhost:2154"
添加到其请求标头中。当我将URL放入浏览器时,这些当然不存在。我的XHR代码如下:
function fetchit(host, n){
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function(){
if(this.readyState == 4){
//do cool stuff
}
}
xmlhttp.withCredentials = true;
xmlhttp.open('GET', 'http://'+host+'/?cmd=getMsg&n='+n);
xmlhttp.send();
}
我得到的印象是,这与XHR在请求标头上的origin
有关,但我认为我在响应标头中提到的行会使origin
无关紧要。很明显,我对CORS有一些了解 - 请提前感谢任何想法,
答案 0 :(得分:0)
好吧 - 我想通了。问题是,与非凭证请求相比,凭证请求在对接中更大的痛苦。 This MDN page解释了需要发生的事情。 TL; DR:
access-control-allow-credentials: true
access-control-allow-origin
无法在凭证请求中进行通配。