2014-10-06 73 views
6

允许我做一个POST使用邮差Chrome扩展服务,我也得到了预期的响应。

但是,当我做同样的POST请求使用$http,一切都去了地狱。

我得到一个:

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

Engaged-Auth-Token是一个头。

我不知道为什么有邮差作品,它不与Chrome浏览器...

任何想法?

回答

0

这个问题是因为在请求标题中缺少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'] = '*'; 
    } 
]); 
+10

我相信这需要读取$ httpProvider.defaults.headers.common [“访问控制允许报头”] =' *“;注意周围的引号*,否则你会得到各种错误。 – 2014-10-20 21:21:36

7

我相信配置在$ httpProvider在客户端访问控制允许报头将无法​​正常工作。我认为头需要在服务器上配置(作为响应头)。在例如一个节点Express应用程序,这可能是与中间件(例如)来完成,将是这样的:

res.header('*') 

或(更多选择)只是标题,您需要:

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

如果后端改变cors.js使用帆API,并添加您的令牌这里提交

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' 
}; 
相关问题