具有$ http的Access-Control-Allow-Header不允许使用请求标头字段

时间:2014-10-06 07:18:19

标签: angularjs post http-headers request http-post

我正在使用 Postman Chrome扩展程序对服务进行 POST ,我得到了预期的响应。

但是,当我使用$http执行相同的 POST 请求时,一切都会变成地狱。

我得到了:

Request header field Engaged-Auth-Token is not allowed by Access-Control-Allow-Headers

Engaged-Auth-Token是标题。

我不知道为什么Postman有效并且它不能与Chrome合作......

有什么想法吗?

3 个答案:

答案 0 :(得分:7)

我认为在CLIENT上配置$ httpProvider上的 Access-Control-Allow-Headers 是行不通的。我认为需要在服务器上配置标头(作为响应标头)。例如,在一个node-express应用程序中,这可以通过中间件(例如)完成,放置如下内容:

res.header('*')

或(更有选择性地)您需要的标题:

res.header('Engaged-Auth-Token, Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');

答案 1 :(得分:1)

问题是因为请求标头中缺少Access-Control-Allow-Headers。要解决此问题,我们需要将Access-Control-Allow-Headers: *添加到请求标头

Access-Control-Allow-Headers添加http request header。您可以使用$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'] = '*';
    }
]);

答案 2 :(得分:0)

如果在后端使用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'
};