用ajax跨域上传文件不加xhr就能请求成功,为了实现进度条功能在ajax里面加了xhr就报错了
$.ajax({
url: "http://localhost:823/api/FileStream/Upload",
type: "post",
contentType: false,
cache: false,
processData: false,
contentType: false,
data: formdata,
xhr:function(){ var myXhr = $.ajaxSettings.xhr(); if (myXhr.upload) { myXhr.upload.addEventListener("progress", progressHandlingFunction,false); } return myXhr; },
success: function (text){ if (text == "success") { alert("上传成功"); }
报什么错误?
报不支持options错误 500
@bokeyuan_number_1: 那应该是服务端的问题
@dudu: 服务端没问题,我在配置文件里面配置了
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Max-Age" value="30"/>
<add name="Access-Control-Allow-Methods" value="GET,POST,OPTIONS"/>
<add name="Access-Control-Allow-Headers" value="Content-Type, Accept" />
</customHeaders>
</httpProtocol>
没有加xhr获取上传进度时请求一直没问题文件也上传到了服务端,加了之后就在前台ajax那个地方报错,不知是什么原因
@bokeyuan_number_1: 出错时的request headers与response headers是什么?
@dudu: response headers :
request headers:
后来把服务端的端口改成63695了,您帮我看下,实在找不出原因了
@bokeyuan_number_1: 可能是Access-Control-Allow-Origin:*
引起的,建议将*改为http://localhost:63695
试试
@dudu: 终于解决了,要在web api里面的Global写自定义header时进行处理。虽然这个答案没有解决这个问题,但给我提供了一个很好的解决思路。谢谢你啦!