ajax调用HTTP REST API出错

我想用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);
            }
阅读 9k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进