【发布时间】:2014-05-25 11:44:41
【问题描述】:
所以 - 如果我通过浏览器访问远程服务器上的 URL,example.host.com,我会返回一些 JSON - 太好了。
如果我将完全相同的 URL 放入一些 javascript 中,该 javascript 从本地机器上的服务器提供的页面发出 XMLHttpRequest,我什么也得不到,status=0 和 statusText=null。相关事实:
- 远程服务器的响应头有
access-control-allow-origin: '*' - 当我发出 XMLHttpRequest 时,它会将
referer: "http://localhost:2154/HV"和origin: "http://localhost:2154"添加到其请求标头中。当我将 URL 放入浏览器时,这些当然不存在。 - MDN 表示我上面描述的状态报告通常发生在未发送请求时。
- 我已经用 node + express 构建了我的本地服务器
-
我的 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 有一些不明白的地方 - 提前感谢您的任何想法,
【问题讨论】:
标签: xmlhttprequest cors