我需要使用Angular进行跨域请求,但是我收到了错误
XMLHttpRequest cannot load http://machine_name_in_my_network:8082/GetAll. No
请求中存在“Access-Control-Allow-Origin”标头
resource. Origin 'http://localhost:53379' is therefore not allowed
访问。响应的HTTP状态代码为500。
我看到了here一个解决方案示例,但对我没用。
这是我的本地主机向我网络中的计算机发出的请求,应该返回JSON。
代码段
//Controller
function crmContatosCtrl($scope, apiService) {
apiService.get('/GetAll').then(function (data) {
$scope.contatos = data;
});
然后来到我的服务
function comWebApi_Service($http, $log) {
return {
get: function (url, data) {
//return $http.jsonp(ApiURL + url)
// .success(function (data) {
// debugger;
// })
// .error(function (data) {
// debugger;
// });
return $http.get(ApiURL + url, data).then(
function (res) {
return res.data;
});
},
angular
.module('app')
.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
}])
.service('apiService', comWebApi_Service);
答案 0 :(得分:1)
这是服务器方面缺少的代码,而不是浏览器AngularJS代码中的代码。使用最近的angularjs构建,不需要这些行中的任何一行。这些都是基于过时的信息(它们不会破坏任何东西,它们只是不必要的并且基于过时的copypasta):
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
您的服务器代码需要在其HTTP响应中添加必要的CORS标头,因此请维护人员这样做或发布服务器端代码片段,我们可以帮助解决这个问题。
答案 1 :(得分:1)
您需要在服务器上启用cors
e.g。全局初始化
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
详细了解here ...阅读Scope Rules for [EnableCors]