允许我做一个POST使用邮差Chrome扩展服务,我也得到了预期的响应。
但是,当我做同样的POST请求使用$http
,一切都去了地狱。
我得到一个:
Request header field Engaged-Auth-Token is not allowed by Access-Control-Allow-Headers
Engaged-Auth-Token
是一个头。
我不知道为什么有邮差作品,它不与Chrome浏览器...
任何想法?
允许我做一个POST使用邮差Chrome扩展服务,我也得到了预期的响应。
但是,当我做同样的POST请求使用$http
,一切都去了地狱。
我得到一个:
Request header field Engaged-Auth-Token is not allowed by Access-Control-Allow-Headers
Engaged-Auth-Token
是一个头。
我不知道为什么有邮差作品,它不与Chrome浏览器...
任何想法?
这个问题是因为在请求标题中缺少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'] = '*';
}
]);
我相信配置在$ httpProvider在客户端访问控制允许报头将无法正常工作。我认为头需要在服务器上配置(作为响应头)。在例如一个节点Express应用程序,这可能是与中间件(例如)来完成,将是这样的:
res.header('*')
或(更多选择)只是标题,您需要:
res.header('Engaged-Auth-Token, Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');
如果后端改变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'
};
我相信这需要读取$ httpProvider.defaults.headers.common [“访问控制允许报头”] =' *“;注意周围的引号*,否则你会得到各种错误。 – 2014-10-20 21:21:36