Javascript 无法使用angular ajax,因为它显示No';访问控制允许原点';。但是可以使用xmlhttprequest和jQuery3x来完成
正如问题所说,我使用xmlhttprequest类和jQueryAjax成功地从服务器加载数据,但在angular ajax中,我无法做到这一点,因为angular ajax说没有“访问控制允许源” 注意:另外,当jquery版本降级到低于3时,它也不会像angular ajax那样显示“访问控制允许源”。它们有任何连接吗 以下是jquery ajax代码,该代码正在工作,但在将版本从3降级到低于3时不起作用:Javascript 无法使用angular ajax,因为它显示No';访问控制允许原点';。但是可以使用xmlhttprequest和jQuery3x来完成,javascript,jquery,angularjs,ajax,Javascript,Jquery,Angularjs,Ajax,正如问题所说,我使用xmlhttprequest类和jQueryAjax成功地从服务器加载数据,但在angular ajax中,我无法做到这一点,因为angular ajax说没有“访问控制允许源” 注意:另外,当jquery版本降级到低于3时,它也不会像angular ajax那样显示“访问控制允许源”。它们有任何连接吗 以下是jquery ajax代码,该代码正在工作,但在将版本从3降级到低于3时不起作用: <script src="https://code.jquery.com/
<script src="https://code.jquery.com/jquery-3.1.1.js" integrity="sha256-16cdPddA6VdVInumRGo6IbivbERE8p7CQR3HzTBuELA=" crossorigin="anonymous"></script>
<script>
$(document).ready(function(){ $.ajax({
url:'http://...',
data:"{\"city\":\"Kolkata\"}",
method:'post',
headers:{'Content-Type': 'application/json','accept': 'application/json'},
success:function(data){
console.log(data);
},
error:function(data){
console.log(data);
}
});
});
但是angular1 ajax代码不起作用。angular1版本是最新的
$http({
method: 'POST',
url: '...',
headers: {'Content-Type': 'application/x-www-form-urlencoded,application/json',
'Accept':'application/json'},
data: {'city':'Kolkata'}
}).then(function successCallback(response){
console.log(response);
//return response;
},function errorCallback(response){
//return response;
console.log(response);
});
谢谢您的时间。答案可能在您的chrome devtools网络选项卡中。查看每个请求的请求和响应头,特别是任何CORS头和
Origin
头,查找jQuery和Angular版本之间的差异
此外,请查看是否存在选项
方法类型的http请求,如果存在,则angular调用可能正在尝试发送更多的头或使用凭证发送,这将为COR标记它
如果无法减少角度请求以不触发CORS,则应能够修改服务器代码,为Access Control Allow Origin
设置一个响应头,该响应头的值为*
,或在大多数情况下与请求头中发送的原点相匹配的字符串,尽管这实际上取决于导致您请求使用CORS的因素。您可能还需要提供带有值*
的访问控制允许标头
响应标头,或请求中发送的各个标头的名称,以逗号分隔
您的angular调用似乎正在触发CORS,因为您正在设置不受支持的内容类型
简单请求标头:
推荐阅读-如果我错了,请纠正我,但我认为这是因为如果请求是跨源的,jQuery会将crossDomain选项设置为true。他们在$.ajax功能中内置了CORS支持。@Tom-虽然客户端可以限制对特定请求触发CORS(省略标题等),但一旦触发CORS,就需要在服务器端设置响应标题(不能仅由jQuery客户端处理)。jQuery可能使用jsonp绕过CORS。@cchamberlain,但我认为头是在服务器端设置的。因为jQuery 3和xmlhttprequest都可以成功访问数据。所以,如果是js,我该怎么办?我需要使用angular js。在两个示例中,您在帖子上设置了不同的标题,这可能就是一个触发CORS而另一个不触发的原因。我认为您的服务器没有根据您的错误设置CORS响应头。@cchamberlain非常感谢您cchamberlain:)。我将内容类型“:”application/x-www-form-urlencoded,application/json更改为内容类型“:”application/json,并且它正在工作。再次非常感谢。你救了我一天:)
$http({
method: 'POST',
url: '...',
headers: {'Content-Type': 'application/x-www-form-urlencoded,application/json',
'Accept':'application/json'},
data: {'city':'Kolkata'}
}).then(function successCallback(response){
console.log(response);
//return response;
},function errorCallback(response){
//return response;
console.log(response);
});