Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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 CORS上载始终以错误事件结束_Javascript_Ajax_Xmlhttprequest_Cors - Fatal编程技术网

Javascript CORS上载始终以错误事件结束

Javascript CORS上载始终以错误事件结束,javascript,ajax,xmlhttprequest,cors,Javascript,Ajax,Xmlhttprequest,Cors,我需要使用javascript按照CORS规范将文件上传到服务器 互联网上有很多例子,事实上一切正常(文件已上载),但最后触发的事件是一个错误 如果我查看目标,则XMLHttpRequest会找到一个readyState=4。这符合规范要求 DONE: The data transfer has been completed or something went wrong during the transfer (e.g. infinite redirects). source http://

我需要使用
javascript
按照
CORS
规范将文件上传到服务器

互联网上有很多例子,事实上一切正常(文件已上载),但最后触发的事件是一个错误

如果我查看目标,则
XMLHttpRequest
会找到一个
readyState=4
。这符合规范要求

DONE: The data transfer has been completed or something went wrong during the transfer (e.g. infinite redirects).

source http://www.w3.org/TR/XMLHttpRequest/#dom-xmlhttprequest-readystate
状态始终为
0
,但文件确实已上载,进度正常,服务器返回创建的
201

一段代码:

var fd = new FormData(document.getElementById('viForm'));
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.addEventListener("load", uploadComplete, false);
xhr.addEventListener("error", uploadFailed, false);
xhr.addEventListener("abort", uploadCanceled, false);
xhr.open("POST", submitAddress);
xhr.setRequestHeader('X-Auth-Token', token);
xhr.send(fd);


function uploadFailed(e) { console.log(e); }

问题是,尽管我在
选项
请求中设置了服务器以发回相应的头,但在实际的
POST
中,我没有发送
访问控制允许源站

xhr.setRequestHeader('Access-Control-Allow-Origin', '*');

这对我来说似乎很奇怪,因为据我所知,服务器是负责返回这个“accesscontrolalloworigin”头的。我认为你实际上改变了服务器端的其他一些东西