2016-11-16 116 views
0

我目前正在嘗試在NodeJS服務器和AngularJS客戶端之間進行基於令牌的身份驗證。AngularJS無法從NodeJS服務器讀取響應HTTP頭

換句話說:服務器生成令牌,在http頭中發送給客戶端,客戶端接收並設置要在下一個請求中發送的令牌(在http頭中),當請求到達服務器時檢查它是否被檢查包含以前發送的令牌。重複。

問題是我無法從AngularJS讀取頭文件,即使我可以通過Chrome的控制檯看到頭文​​件已成功設置在響應中。

到目前爲止,我有一個AngularJS攔截器(我已經告訴我應該怎麼做)這樣的:

angular 
    .module('injector', []) 
    .factory('sessionInjector', function(){ 

     var injectedSession = { 
      response: function(res) { 

       console.log("RESPONSE: " + JSON.stringify(res.config.headers)); 

       return res; 
      }; 

     return injectedSession; 
}); 

這是輸出:

RESPONSE: {"Accept":"application/json, text/plain, */*"} 

我我剛剛開始使用AngularJS,我有點迷路。希望我沒有搞砸一些非常基本的東西。

謝謝。

+0

您確定要打印正確的回覆嗎? – Piu130

+0

我是,我在下面回答了我自己的問題,經過幾個小時的研究,我在另一個stackoverflow線程上找到了答案。 – Strinnityk

回答

0

似乎改變

response 

'response' 

做的伎倆。

我不知道爲什麼會發生。

2

當你打一個http請求它看起來象下面這樣: -

$http.get("your URL",) 
     .success(function (data,status, headers, config) { 
     console.log(headers('Content-Encoding')); 
     }) 
     .error(function (error) { 
      canceller.reject(error); 
     }); 
} 

你將收到來自回調其他細節服務器響應,並可以像頭以上。

我希望它能幫助你。 感謝

+0

這不是僅僅提出一個請求嗎?或者這樣做是否允許我攔截所有收到客戶的回覆? – Strinnityk

+0

每次請求服務器時,您都可以爲請求提供全局服務並使用該服務。 – Akhil

+1

像module.factory( 「deferredService」,[ '$ HTTP',函數($ HTTP){ 變種服務= {}; service.get =函數(URL){$ http.get(URL) 。 (函數(錯誤){ defler.reject(error); })成功(功能(數據,狀態,頭,配置){console.log(頭部('Content-Encoding')); }) } ); } return service; }]); 將此服務包含在您的Angular控制器中,並撥打電話 deferredService.get(「您的URL」) 。然後(函數(響應){ }); – Akhil

相關問題