Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 与GET请求一起发出的虚假ajax选项请求_Javascript_Node.js_Ajax - Fatal编程技术网

Javascript 与GET请求一起发出的虚假ajax选项请求

Javascript 与GET请求一起发出的虚假ajax选项请求,javascript,node.js,ajax,Javascript,Node.js,Ajax,我正在用下面的代码发出一个标准的ajax请求 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请求。第一个是选项请求,第二个是我实际想要的GET请求。知道为

我正在用下面的代码发出一个标准的ajax请求

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请求。第一个是选项请求,第二个是我实际想要的GET请求。知道为什么吗

我的服务器是一个nodejs应用程序,我正在使用它启动
nodemon
,如果它感觉到
index.js
发生了变化,就会重新启动服务器(这在开发中很有帮助,当你不想停止并重新启动服务器时)。使用此选项业务,
nodemon
认为我的
index.js
已更改并重新启动
nodejs

此外,选项请求会导致返回http 200的成功请求。但是,最初启动ajax请求的网页不会返回任何内容(这可能是在选项请求之后,
nodemon
会立即重新启动
nodejs
。然后重复GET请求,同样是200,网页会得到结果

问题是,出于某种原因,我无法理解,会发出两个ajax请求。第一个是选项请求,第二个是我真正想要的GET请求。知道为什么吗

因为您正在进行跨源呼叫(例如,从
http://localhost
http://localhost:someport
),这通常是不允许的。因此浏览器会发送一个“飞行前”选项请求,以查看服务器是否希望通过允许呼叫