我使用Ajax post方法调用Rest调用但是我收到以下错误或响应。
{"readyState":0,"status":0,"statusText":"error"}
即使我启用了cors($ .support.cors = true;)和crossDomain(crossDomain:true(添加标题))。
以下是示例请求: -
function() {
$.support.cors = true;
var evergentData = {
"UpdateContactRequestMessage":{
"channelPartnerID":"123456",
"email":"greg@gmail.com",
"firstName":"greg",
"lastName":"chappel",
"externalId":"GC123",
"sessionToken":"f53095854bb230996f54fe32ed5a63f68c7718c7"
}
};
//GetProducts();
jQuery.ajax({
type: 'POST',
url: 'url for rest api call',
contentType: "application/json",
Accept: "application/json; charset=utf-8",
dataType: 'json',
data: evergentData,
//data: JSON.stringify(evergentData),
crossDomain: true,
processData: true,
headers: { 'access-control-allow-origin': '*',
},
success: function(resp){
// we have the response
alert("Server said123:\n '" + resp + "'");
},
error: function(e){
alert('Error121212: ' + e);
alert(e.toString());
console.log('my message' + e);
console.log('tables: ' + JSON.stringify(e));
}
});
};
以下是回复标题: -
access-control-allow-headers → client_type, content-type, accept, accept-language, auth_token_base64, appID, accept-encoding, content-length, x-requested-with
access-control-allow-methods→POST,GET,OPTIONS,DELETE
access-control-allow-origin→*
允许→GET,HEAD,POST,PUT,DELETE,TRACE,OPTIONS
content-length→92
content-type→application / json
x-frame-options→sameorigin
x-webobjects-loadaverage→0
任何人都可以帮助我,为什么我在JqueryAjax的电话会议中没有得到rest api电话的响应。
谢谢你的进步。
答案 0 :(得分:0)
重要的是要了解REQUEST标头中的access-control-allow-origin': '*'
什么都不做。
Access-Control-Allow-Origin
标头必须位于您正在呼叫的服务的RESPONSE标头中。因此,该服务会规定允许谁调用资源,因此服务必须将您的应用URL添加到其“RESPONSE Access-Control-Allow-Origin
标题中。
另请注意,通配符*不适用于通过HTTPS访问的资源。对于基于HTTPS的资源,只有绝对路径有效。
为什么Postman有效?因为浏览器没有忽略标题和策略。
更多阅读: