我在jQuery中有以下AJAX请求:
$.ajax({
url: "http://someurl.stuff.com",
beforeSend: function(xhr) {
xhr.setRequestHeader("Accept", "application/json");
xhr.setRequestHeader("Host",null);
xhr.setRequestHeader("Access-Control-Request-Method",null)
xhr.setRequestHeader("Origin",null)
xhr.setRequestHeader("Access-Control-Request-Headers",null)
xhr.setRequestHeader("DNT",null)
xhr.setRequestHeader("Accept-Encoding",null)
},
type: 'GET',
dataType: 'text json',
success: function (data) {
console.log("Success")
alert(data);
},
error: function(data){
debugger;
console.log("failure")
alert(data)
}
});
我已经确认我收到了有效的JSON。但是,出于某种原因,我仍然遇到上面的“错误”。任何人都可以帮助我绕过这个或如何在结果中访问JSON? JSON看起来像这样:
{
"ins": "first Value",
"nx": "second value"
}
编辑,所以我注意到在控制台中我收到以下消息:
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
我觉得奇怪的是,我在Chrome“网络”标签中看到了回复,我无法让它显示在浏览器中。
答案 0 :(得分:0)
如果正在触发该错误回调函数,那只是因为您的服务器/后端/网址(http://someurl.stuff.com)没有响应该请求的200 / 2XX状态代码。
检查此项以获取有关HTTP状态代码的更多信息:
https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_errors
答案 1 :(得分:0)
好的,所以我弄清楚发生了什么。由于响应不包含Access-Control-Allow-Origin
标头,因此Chrome的内置安全性会阻止JSON到达实际脚本,尽管它确实会到达服务器。适用于较旧的IE浏览器。
答案 2 :(得分:0)
我不确定你要对标题做什么,但我建议你对CORS做一些阅读。 This是一个非常好的资源。如果您想限制谁可以访问您的终端,您可以设置Access-Control-Allow-Origin: http://someurl.stuff.com
$.ajax({
url: "http://someurl.stuff.com",
type: 'GET',
dataType: "json",
success: function (data) {
console.log("Success")
console.log(data);
},
error: function(xhr){
console.log("failure")
console.log("An error occured: " + xhr.status + " " + xhr.statusText)
}
})