Javascript 本地主机和put方法的CORS问题
我正在尝试发出CORS请求,以便在位于两个不同域中的客户端和服务器之间进行通信 服务器标头已设置为以下值- 访问控制允许标头:内容类型、授权、内容长度、X-Requested-With 访问控制允许方法:获取、放置、发布、删除、选项 访问控制允许来源:* 如果我点击服务器url,我可以看到响应头 现在,当我使用jquery将数据和方法发送到服务器以进行处理并返回数据时,我得到以下结果 加载失败http://server.com/event/live: 请求的资源上不存在“Access Control Allow Origin”标头。起源'http://localhost:3016因此,不允许访问。响应的HTTP状态代码为502 Jquery代码是-Javascript 本地主机和put方法的CORS问题,javascript,jquery,api,http-status-code-502,Javascript,Jquery,Api,Http Status Code 502,我正在尝试发出CORS请求,以便在位于两个不同域中的客户端和服务器之间进行通信 服务器标头已设置为以下值- 访问控制允许标头:内容类型、授权、内容长度、X-Requested-With 访问控制允许方法:获取、放置、发布、删除、选项 访问控制允许来源:* 如果我点击服务器url,我可以看到响应头 现在,当我使用jquery将数据和方法发送到服务器以进行处理并返回数据时,我得到以下结果 加载失败http://server.com/event/live: 请求的资源上不存在“Access Contr
callMyAPI : function(pUrl,pType,pData,callback){
var apiURL = API_HOST+pUrl;
jQuery.ajax({
xhr: function() {
var xhr = jQuery.ajaxSettings.xhr();
xhr.upload.onprogress = function(e) {
if (typeof callback == "function"){
var percentComplete = parseInt((e.loaded / e.total)*100);
callback('progress',percentComplete);
}
};
xhr.addEventListener("progress", function(e){
if (typeof callback == "function"){
if (e.lengthComputable) {
var percentComplete = parseInt((e.loaded / e.total)*100);
callback('progress',percentComplete);
}
}
}, false);
return xhr;
},
url: apiURL,
data: pData,
type: pType,
beforeSend: function(xhr){
xhr.withCredentials = true;
},
crossDomain: true,
contentType: 'application/json',
dataType: 'json',
success: function(data) {
if (typeof callback == "function"){
callback('success',data);
}
},
complete: function(){
if (typeof callback == "function"){
callback('complete');
}
}
}).fail(function(xhr, status, error) {
if (typeof callback == "function"){
callback('fail',error);
}
});
},
非常感谢您的帮助。提前感谢。这与jquery代码无关。是浏览器阻止了呼叫。 我建议您确保以下内容: 同样的标题正在出现http://server.com/event/live 如前所述的路线。 在xhr中尝试将数据类型作为jsonp,如果这解决了问题,那么在这种情况下,肯定不会纠正头响应的拼写错误或丢失的内容。对于您正在执行的项目类型,根本不建议使用jsonp。 最重要的是,如果你在该航线上进行POST/PUT,请确保你回复选项类型的呼叫探索飞行前呼叫
当我尝试使用curl-X选项时http://api-host/event/live 然后我从服务器得到curl:52的空回复。我需要查看nginx站点配置文件,因为它可能正在使用代理服务器。这是案例3,您没有得到405,这意味着nginx配置不允许访问api服务器,或者api服务器没有给出错误的响应选项。此外,请检查标题以及选项Call抱歉,我放错了api主机。现在我得到了更多的回应。我可以看到响应标题-访问控制允许来源:*访问控制允许方法:GET、PUT、POST、DELETE、OPTIONS访问控制允许标题:内容类型、授权、内容长度、X-request-WithI使用的方法PUT,看起来还可以。我怎样才能知道是否还有其他阻塞方法在起作用。我猜“阻塞方法”的意思与PUT相同。所以,除了PUT之外,POST是一种通过浏览器在飞行前调用中检查此标题的方法。除了OPTIONS/HEAD/TRACE之外,所有方法都会选中此标题