2015-09-05 85 views
0

我爲我的REST應用程序設置標題有一些麻煩。 我需要授權令牌設置爲授權頭,實際上我使用此代碼:中的forEachAngularJS中的攔截器

app.factory('sessionInjector', ['$log','$rootScope', function($log, $rootScope) { 
    var sessionInjector = { 
     request: function(config) { 

       $log.debug($rootScope.accesstoken); 

       angular.forEach($rootScope.accesstoken, function(value, key) { 
        if(key=='access_token'){ 
         $log.debug(value); 
         config.headers['Authorization'] = "Bearer " + value; 
        } 
       }); 

      return config; 
     } 
    }; 
    return sessionInjector; 
}]); 


app.config(['$httpProvider', function ($httpProvider) { 
    $httpProvider.interceptors.push('sessionInjector'); 
}]); 

值具有正確的標記值。

可惜還是沒有得到資源...

記錄語句執行,我看不出請求頭。 Image with headers 第一個請求頭用於獲取令牌,並且工作正常,但對第二個請求等資源的請求不會發送適當的頭。 對於捲曲這個工程:

curl -H "Authorization: Bearer 5314f45f-0ad0-4f3c-92c0-429c8075eea4" http://localhost:8080/categories/ 
+0

這看起來對我來說都是正確的。你在控制檯中看到任何錯誤嗎? –

+0

只有這種類型的錯誤:1.選項http:// localhost:8080/categories angular.js:9827 2.XMLHttpRequest無法加載http:// localhost:8080/categories。無效的HTTP狀態代碼401(索引):1 –

回答

0

而是與每個傳出要求設置它的,也許你應該設置這樣的標題:天疼痛

$httpProvider.defaults.headers.common['Authorization'] = "Bearer " + value; 
+0

這太不起作用了;/ –

+0

@KrzysztofKrólikowski我希望你嘗試在應用程序模塊的配置方法中設置它,而不是在攔截器內部,如下所示:'.config(function($ httpProvider){http://www.Provider.defaults.headers.common'Authorization' ] =「承載者」+值; })' –

0

後一個我發現,實現的攔截器工作當我在IE上執行網站時......但是爲什麼?爲什麼我無法在Chrome或Firefox下設置標題?我用Himanshu的方法和AJAX語法嘗試設置了帶有interceptorsm的頭文件,爲什麼它們都不適用於這些瀏覽器?