编辑:如果您有自定义标头,跨域请求将不起作用。如果您有自定义标头,则会自动发送一个 OPTIONS 请求,服务器必须回复 200 OK,然后发送实际的 POST。由于您必须使用自定义标头进行身份验证,因此您必须更改服务器端以接受 OPTIONS 请求。我怀疑你运气不好。
下面是没有自定义标头的情况下的代码,其中跨域请求工作:使用与此类似的 HTML:
<form >
<input type="file" name="file" id="fileToUpload" onchange="uploadFile()">
</form>
使用此代码
function uploadFile() {
var fd = new FormData();
fd.append("fileToUpload", document.getElementById('fileToUpload').files[0]);
fd.append("directory","/testpost");
fd.append("basename","wobble-004.txt");
var oReq = new XMLHttpRequest();
oReq.open("POST", "https://api.lama.lldns.net/post/file", true);
oReq.onreadystatechange = alert(status);
oReq.send(fd);
}
有关更多信息,请参阅此 Mozilla 博客文章。