2015-11-20 63 views
5

我試圖使用攔截器使用下面的代碼自定義標題添加到在AngularJS應用的每個請求:自定義頁眉在AngularJS添加僅顯示訪問控制請求報頭

angular.module('app').factory('httpRequestInterceptor', function() { 
    return { 
     request: function (config) { 
      config.headers['testheader'] = 'testheaderworks'; 

      return config; 
     } 
    }; 
}); 

angular.module('app').config(function ($httpProvider) {  
    $httpProvider.interceptors.push('httpRequestInterceptor'); 
}); 

這代碼的答案被複制到this question

不幸的是,當我檢查所生成的請求,我得到如下:

臨時標題顯示

訪問控制請求報頭:接受,testheader

訪問控制請求-方法:GET

來源:http://localhost:61577

的Referer:http://localhost:61577/

的User-Agent :Mozilla/5.0(Windows NT 6.1; WOW64)爲AppleWebKit/537.36(KHTML,例如Gecko)鉻/ 46.0.2490.86 Safari瀏覽器/ 537.36

我在無論是在瀏覽器和在服務器側的網絡選項卡證實這點。爲什麼將自定義標題關鍵字'testheader'添加到訪問控制請求標題而不是通用標題?價值發生了什麼?有沒有其他方法可以將自定義標頭添加到每個避免此問題的AngularJS請求?

+0

您是否解決了此問題? – mzain

+0

@mzain是的,請參閱下面的答案。 –

回答

5

在任何情況下,讀取該並且有同樣的問題:

的問題是,角正在作出跨源請求,其中所述瀏覽器被防止。爲了啓用這個請求,我必須在服務器端啓用標題。在我們的情況下(NodeJs),執行此操作的代碼是:

app.use(function (req, res, next) { 
    res.header("Access-Control-Allow-Headers", testheader"); 
    next(); 
}); 
+1

你救了我的命:) –