Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 角度$http:飞行前响应的http状态代码403无效_Angularjs_Post_Http Headers_Cors - Fatal编程技术网

Angularjs 角度$http:飞行前响应的http状态代码403无效

Angularjs 角度$http:飞行前响应的http状态代码403无效,angularjs,post,http-headers,cors,Angularjs,Post,Http Headers,Cors,我正在编写一个angular应用程序,并尝试使用$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) {

我正在编写一个angular应用程序,并尝试使用
$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 ***/v001/登录。回应 飞行前的HTTP状态代码403无效

此外,它似乎发送选项请求而不是POST请求:

请求方法:选项

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


有什么想法吗?

我也有同样的问题。我的后端是一个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>

克斯菲尔特
org.apache.catalina.filters.CorsFilter
cors.allowed.headers
内容类型、X-Requested-With、接受、来源、访问控制请求方法、访问控制请求头、授权

这里是针对ExpressJS的Cors中间件(NodeJS)

代码:

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

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

我认为您必须像
$http.post('https://backend-test/***/v001/login',{params:{userName':'admin',password':'passtest'}},{headers:{Accept':'application/json',Content Type':'application/json'}})。然后(函数成功(响应){console.log(响应);})
@pbolduc使用
参数
不适用于post请求服务器似乎未启用CORS和/或似乎未设置为处理浏览器在发出跨域请求时发送的选项飞行前请求将在Hull.it或Runscope上工作,因为这些是发出请求的基于服务器的客户端。他们不需要像客户端JS那样使用COR。
var cors = require('cors'),express = require('express');
var app = express(); // defining app using express

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