我想用JQuery的ajax方法来调用REST API上传图片,但是返回错误
XMLHttpRequest cannot load http://v0.api.upyun.com/xxx/wtf.jpg. Method PUT is not allowed by Access-Control-Allow-Methods. 请问这个是怎么回事?
以下是我的代码
//提交到又拍云
function submitToUpYun(authorization){
$.ajax({
type: http_method,
url: "http://v0.api.upyun.com/xxx/wtf.jpg",
processData:false,
contentType: false,
data:file,
headers:{
"Authorization":authorization,
"Content-Length": file.size,
},
success: function(responseText, textStatus, jqXHR){
alert(responseText);
},
error: function(XMLHttpRequest, textStatus, errorThrown){
alert(textStatus);
},
beforeSend:function (XMLHttpRequest) {
this; // 调用本次AJAX请求时传递的options参数
}
});
}
另外如果我把METHOD改成POST,会报错误:Request header field Authorization is not allowed by Access-Control-Allow-Headers.
是不是因为跨域的问题?有何好的解决方法吗?
换成XHR也是不行的,以下是我调用XHR的代码:
//提交到又拍云
function submitToUpYun(authorization){
var xhr = new XMLHttpRequest();
xhr.open("PUT", "http://v0.api.upyun.com/pandora001/wtf.jpg",true);
xhr.onreadystatechange = function(){
if (xhr.readyState==4 && xhr.status==200){
alert(xhr.responseText);
}
};
xhr.setRequestHeader("Authorization",authorization);
xhr.setRequestHeader("Content-Length",file.size);
xhr.send(file);
}
可以参考一下这个用户的处理方式:
http://segmentfault.com/q/1010000000483901