我在localhost中有一个$ http请求,它正在调用一些api的url。我在执行调用时遇到错误
Response for preflight has invalid HTTP status code 403
我可以使用角度做任何事情,以便我可以解决这个问题吗?我有chrome的CROS插件以允许交叉来源请求
$http({
method: 'POST',
url: url,
data:data1,
headers: {
'Access-Control-Allow-Origin': '*',
}
})
答案 0 :(得分:5)
如果您使用java restful controller作为您的服务器。 您可以参考https://spring.io/guides/gs/rest-service-cors/
我在我的控制器上添加了@CrossOrigin(originins =" *")并且它可以工作。 基本上,你不能在客户端做任何事情。
林
答案 1 :(得分:1)
好的,这就是我怎么想的。这一切都与CORS政策有关。在POST请求之前,Chrome正在执行预检OPTIONS请求,该请求应在实际请求之前由服务器处理和确认。现在这真的不是我想要的这么简单的服务器。因此,重置标题客户端可防止预检:
app.config(function ($httpProvider) {
$httpProvider.defaults.headers.common = {};
$httpProvider.defaults.headers.post = {};
$httpProvider.defaults.headers.put = {};
$httpProvider.defaults.headers.patch = {};
});
浏览器现在将直接发送POST。希望这可以帮助很多人...我真正的问题是不够理解CORS。
链接到一个很好的解释:http://www.html5rocks.com/en/tutorials/cors/
感谢这个答案给我指路。 AngularJS POST Fails: Response for preflight has invalid HTTP status code 404
答案 2 :(得分:0)
我在angularjs中有这个代码:
$http.post('http://localhost:8080/employee/'
, $scope.alumno
,{headers: {'Content-Type': 'application/json'}}
).success(function(data){
if ( data.err === false ) {
$scope.actualizado = true;
setTimeout(function() {
$scope.actualizado = false;
$scope.$apply();
}, 3500);
};
});
我的API有这些数据:
//Add employee:
Url: http://localhost:8080/employee
Type request: POST
Add a new employee:
{
"firstName": "Javier",
"lastName": "Piedra",
}`
我使用带有扩展名的chrone用于GET的可用CORS,但是发布了这个错误:
XMLHttpRequest cannot load http://localhost:8080/employee/. Response for
preflight has invalid HTTP status code 403
在我的app.config中使用:
app.config( function($routeProvider,$httpProvider){
$httpProvider.defaults.headers.common = {};
$httpProvider.defaults.headers.post = {};
$httpProvider.defaults.headers.put = {};
$httpProvider.defaults.headers.patch = {};
也许这可以解决您的问题。
此致