2016-09-20 41 views
1

我在本地主机中有一个$ http请求,它调用某个api的url。我在执行呼叫时出错预检的响应在角度发布请求上有无效的HTTP状态代码403

Response for preflight has invalid HTTP status code 403 

我可以使用角度来做任何事情,以便我可以解决此问题吗?我有镀铬的CROS插件,允许跨起源请求

$http({ 
       method: 'POST', 
       url: url, 
       data:data1, 
       headers: { 
        'Access-Control-Allow-Origin': '*',     
       } 
      }) 
+0

什么是服务器端脚本? –

+0

403是禁止访问... –

+0

这是服务器端脚本/代码,需要将允许源添加到他们的代码。 – Olantobi

回答

0

好了,所以这里就是我想通了这一点。这一切都与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

+0

有没有像jQuery这样的解决方案? – jDub9

4

如果您使用java restful controller作为您的服务器。 你可以参考https://spring.io/guides/gs/rest-service-cors/

我在我的控制器上加了@CrossOrigin(origins =“*”),它工作正常。基本上,你不能在客户端做任何事情。

+0

这对我有效。 Java代码中的控制器方法长期保留此注释会带来什么风险? – jDub9

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与扩展可用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 = {}; 

或许这可以为你的问题的解决方案。

Regards

+0

如果您有新问题,请点击[问问题](https://stackoverflow.com/questions/ask)按钮。如果有助于提供上下文,请包含此问题的链接。 - [来自评论](/ review/low-quality-posts/16301631) –

+0

谢谢。我不能问:你已经达到了你的问题限制。问候 – juanitourquiza

相关问题