允許我做一個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