AngularJs -- 对 XMLHttpRequest 的访问已被 CORS 策略阻止
AngularJs -- Access to XMLHttpRequest has been blocked by CORS policy
错误:
Access to XMLHttpRequest at 'http://localhost:8080/api/v1/locations' from origin 'http://localhost:8000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我在 WebStorm 和 Postman 的 request.http 文件中测试了 get 方法,它工作正常,但在我的 Angularjs 项目中不起作用。
(我从 Spring 引导 java 项目中获得)。
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) {
$http.get("http://localhost:8080/api/v1/locations")
.then(function(response) {
$scope.result = response.data;
console.log("OK:", response.data);
}).catch(function(response) {
console.log("ERROR:", response);
});
});
我的 get 函数 return 在 postman 中是这样的
[
{
"datetime": "2019-01-10T19:00:00.000+0000",
"user": {
"firstName": "thr",
"lastName": "an",
"id": 1
},
"speed": 0.0,
"latitude": 37.421998333333335,
"longitude": -122.08400000000002,
"id": 1
},
{
"datetime": "2019-01-10T19:01:00.000+0000",
"user": {
"firstName": "thr",
"lastName": "an",
"id": 1
},
"speed": 1.575,
"latitude": 37.42198333333335,
"longitude": -122.080000000002,
"id": 2
}
]
控制台:https://i.top4top.io/p_1507d02621.jpg
添加一个 .catch
块来记录错误:
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) {
$http.get("http://localhost:8080/api/v1/locations")
.then(function(response) {
$scope.result = response.data;
console.log("OK:", response.data);
}).catch(function(response) {
console.log("ERROR:", response);
});
});
Postman 通常不使用或考虑 CORS header。另一方面,浏览器需要它,如果它丢失了,你就会得到这个错误。
在您的后端代码中,您应该将用于请求数据的域列入白名单。在您的情况下,这将是 http://localhost:8080
。
我希望这是有道理的。
错误:
Access to XMLHttpRequest at 'http://localhost:8080/api/v1/locations' from origin 'http://localhost:8000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我在 WebStorm 和 Postman 的 request.http 文件中测试了 get 方法,它工作正常,但在我的 Angularjs 项目中不起作用。 (我从 Spring 引导 java 项目中获得)。
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) {
$http.get("http://localhost:8080/api/v1/locations")
.then(function(response) {
$scope.result = response.data;
console.log("OK:", response.data);
}).catch(function(response) {
console.log("ERROR:", response);
});
});
我的 get 函数 return 在 postman 中是这样的
[
{
"datetime": "2019-01-10T19:00:00.000+0000",
"user": {
"firstName": "thr",
"lastName": "an",
"id": 1
},
"speed": 0.0,
"latitude": 37.421998333333335,
"longitude": -122.08400000000002,
"id": 1
},
{
"datetime": "2019-01-10T19:01:00.000+0000",
"user": {
"firstName": "thr",
"lastName": "an",
"id": 1
},
"speed": 1.575,
"latitude": 37.42198333333335,
"longitude": -122.080000000002,
"id": 2
}
]
控制台:https://i.top4top.io/p_1507d02621.jpg
添加一个 .catch
块来记录错误:
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) {
$http.get("http://localhost:8080/api/v1/locations")
.then(function(response) {
$scope.result = response.data;
console.log("OK:", response.data);
}).catch(function(response) {
console.log("ERROR:", response);
});
});
Postman 通常不使用或考虑 CORS header。另一方面,浏览器需要它,如果它丢失了,你就会得到这个错误。
在您的后端代码中,您应该将用于请求数据的域列入白名单。在您的情况下,这将是 http://localhost:8080
。
我希望这是有道理的。