Angular $ http:预检的响应具有无效的HTTP状态代码403

时间:2015-11-06 21:46:56

标签: angularjs post http-headers cors

我正在编写一个有角度的应用程序,并且我正在尝试使用$http服务连接到我们的API。

$http.post('https://backend-test/***/v001/login', {'userName': 'admin', 'password': 'passtest'}, {headers: {'Accept': 'application/json', 'Content-Type': 'application/json'}}).then(function success(response) {
    console.log(response);
});

但是,我继续收到此错误:

  

XMLHttpRequest无法加载   https://backend-test/ *** / V001 /登录。响应   for preflight具有无效的HTTP状态代码403

它似乎也发送了OPTIONS请求而不是POST请求:

  

请求方法:选项

奇怪的是,当我使用这个工具时它正常工作:

https://www.hurl.it/

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

我遇到了同样的问题。我的后端是一个tomcat服务器。我通过配置web.xml解决了这个问题:

<filter>
    <filter-name>CorsFilter</filter-name>
    <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
    <init-param>
        <param-name>cors.allowed.headers</param-name>
        <param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,Authorization</param-value>
    </init-param>     
</filter>

答案 1 :(得分:1)

这里是Cors用于exressJS(NodeJS)的中间件

npm install cors

代码:

var cors = require('cors'),express = require('express');
var app = express(); // defining app using express

app.use(cors()); // **core as middleware**