2017-11-11 222 views
0

我想提出以下虚假AJAX OPTIONS请求被用GET请求

let x = new XMLHttpRequest(); 
x.onload = function(event) { …}; 
x.open("GET", url, true); 
x.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); 
x.send(); 

问题与代码标准的AJAX请求是,由于某种原因,我无法捉摸,二Ajax请求是一起做制作。第一个是OPTIONS请求,第二个是我真正想要的GET请求。任何想法为什么?

我的服务器是一个应用程序的NodeJS其中我使用nodemon其重新启动服务器,如果它检测index.js已发生变化(这是发展有帮助的,当你不希望停止和重新启动服务器)。通过此OPTIONS业务,nodemon认为我的index.js已更改并重新启动nodejs

此外,OPTIONS请求会返回一个成功的请求,返回http 200.但是,没有任何内容返回到首先发起ajax请求的网页(这可能是OPTIONS请求后立即发生的,nodejs通过nodemon重新启动。然后GET请求是重复的,也有200和网页得到结果

回答

1

的问题是,由于某种原因,我无法捉摸,二Ajax请求制成。第一一个是OPTIONS请求,第二个是我真正想要的GET请求。任何想法为什么?

由于您正在进行跨通信来电(例如,从http://localhosthttp://localhost:someport),Same Origin Policy通常不允许这样做。所以浏览器发送一个“pre-flight”OPTIONS请求来查看服务器是否想通过Cross-Origin Resource Sharing来允许呼叫。