0

我試圖使用攔截器爲所有GET/POST請求添加「授權」標頭。 這裏是攔截:Angular JS - 爲所有GET/POST請求添加自定義標頭

myApp.factory('httpRequestInterceptor', ['$rootScope', function ($rootScope) { 
    return { 
    request: function ($config) { 
     $config.headers['Authorization'] = 'Basic ' + $rootScope.apiKey; 
     return $config; 
    } 
    }; 
}]); 

的攔截器在主模塊中被用作myApp.config部分如下:

$httpProvider.interceptors.push('httpRequestInterceptor'); 

出於某種原因,也看不出在授權報頭網絡標籤(我使用的是Chrome),並沒有進入服務器,我也沒有收到任何錯誤。 我的應用程序中的GET/POST請求對於不在我的域中的遠程服務器。

任何想法我在這裏做錯了什麼?

解決方案: 我發現這個問題,它是在服務器端 - 顯然,如果我設置的訪問控制允許頭在應對*它不工作,但如果我從字面上指定頭它工作得很好。

回答

0

問題出現在服務器端 - 顯然,在響應中設置Access-Control-Allow-Headers時沒有起作用,只是按照我的需要逐字指定了標題(Access-Control-Allow-Headers:Authorization )工作得很好。

0

我想你應該將其更改爲

myApp.factory('httpRequestInterceptor', ['$rootScope', function ($rootScope) { 
    var injector = { 
     request: function (config) { 
       config.headers['Authorization'] = 'Basic ' + $rootScope.apiKey; 
       return config; 
     } 
    }; 
    return injector; 
    } ]); 

嘗試這樣website

+0

配置未定義... – user1531186

+0

@ user1531186您是否嘗試了我編輯過的解決方案? –

+1

我發現了一個解決方案,請參閱編輯的問題。 感謝您的幫助。 – user1531186

0

您可以使用:

myApp.run([ 
    '$http', '$rootScope', 
    function($http, $rootScope) { 
    $http.defaults.headers.common['Authorization'] = 'Basic ' + $rootScope.apiKey; 
    } 
]); 
+0

也試過這個,不工作... – user1531186

+0

奇怪我在我當前的應用程序中使用類似的東西,它的工作原理。這是一個jsfiddle的作品:http://jsfiddle.net/epnxmkwy/ 我可以看到在發送標題的鉻工具:訪問控制請求頭:接受,授權 –

+0

當你設置$ rootScope.apiKey? –

0

你總能角度來添加使用$httpProvider像頭這個:

myApp.config(['$httpProvider','$rootScope', function ($httpProvider, $rootScope) { 
    $httpProvider.defaults.headers.common['Authorization'] = 'Basic' + $rootScope.apiKey; 
}]); 

這將爲所有請求添加標題。如果您不希望將標題添加到所有請求,您可以設置: $httpProvider.defaults.headers.get['Authorization'] = '';$httpProvider.defaults.headers.post['Authorization'] = ''; 而不是$httpProvider.defaults.headers.common['Authorization']

+0

也嘗試過這種方式,因此無法正常工作。還確保我在響應中設置了Access-Control-Allow-Headers標題,並將其設置爲*。 – user1531186

+0

@ user1531186你可以嘗試創建一個小提琴來重現這個問題嗎? –

+0

我發現了一個解決方案,請參閱編輯的問題。 感謝您的幫助。 – user1531186

相關問題