2014-10-06 69 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' 
}; 
相關問題