Angularjs 带有$http的访问控制允许标头不允许请求标头字段
我正在使用Postman Chrome Extension向服务发布帖子,我得到了预期的回复 但是,当我使用Angularjs 带有$http的访问控制允许标头不允许请求标头字段,angularjs,post,http-headers,request,http-post,Angularjs,Post,Http Headers,Request,Http Post,我正在使用Postman Chrome Extension向服务发布帖子,我得到了预期的回复 但是,当我使用$http执行相同的POST请求时,一切都会陷入地狱 我得到一个: Request header field Engaged-Auth-Token is not allowed by Access-Control-Allow-Headers 参与身份验证令牌作为标头 我不知道为什么邮递员和Chrome不兼容 有什么想法吗?问题是因为缺少请求头中的访问控制允许头。要解决这个问题,我们需要添
$http
执行相同的POST请求时,一切都会陷入地狱
我得到一个:
Request header field Engaged-Auth-Token is not allowed by Access-Control-Allow-Headers
参与身份验证令牌
作为标头
我不知道为什么邮递员和Chrome不兼容
有什么想法吗?问题是因为缺少请求头中的
访问控制允许头。要解决这个问题,我们需要添加访问控制允许标头:
到请求标头
将访问控制允许标头添加到http请求标头
。您可以使用$httpProvider
在应用程序级别执行此操作。在应用程序配置部分的下面一行添加此标题
var app = angular.module("app", [
"ngRoute",
"app.controllers",
"app.directives",
"app.filters"
]);
app.config([
"$routeProvider",
"$httpProvider",
function($routeProvider, $httpProvider){
$httpProvider.defaults.headers.common['Access-Control-Allow-Headers'] = '*';
}
]);
我相信在客户端上的$httpProvider上配置访问控制允许标头将不起作用。我认为需要在服务器上配置头(作为响应头)。例如,在node express应用程序中,这可以通过中间件(例如)实现,如下所示:
res.header('*')
或者(更有选择性地)只需要标题:
res.header('Engaged-Auth-Token, Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');
如果在后端使用sails api,请更改cors.js并在此处添加您的令牌文件
module.exports.cors = {
allRoutes: true,
origin: '*',
credentials: true,
methods: 'GET, POST, PUT, DELETE, OPTIONS, HEAD',
headers: 'Origin, X-Requested-With, Content-Type, Accept, Engaged-Auth-Token'
};
我认为这需要读取$httpProvider.defaults.headers.common['Access-Control-Allow-headers']='*';注意*周围的引号,否则会出现各种错误。