[英]Angular 2 http Observable request not returning response header
我正在使用Angular 2.2.3並使用rxjs對可觀察對象進行http請求。 標頭顯示在Chrome控制台中,但是響應中標頭對象上的標頭列表為空。 這是代碼:
登錄功能
login(body: Object): Observable<Response> {
return this.http.post(this.url, body);
}
調用登錄功能並訂閱可觀察對象
this.authService.login(values).subscribe(res => {
console.log(res.headers.get("Authorization"))
console.log(res)
},
err => {
console.log(err);
});
我做錯了什么還是應該做不同的事情?
Chrome網絡控制台響應標頭
Console.log結果
null
值為res.headers.get("Authorization")
如您所見,標頭列表為空。
非常感謝您的幫助!
我已經找到解決問題的方法。 事實證明,Angular在幕后使用XMLHttpRequest 。 因此,可以“以編程方式”顯示給客戶端的標頭(使用Angular的功能)必須在標頭Access-Control-Expose-Headers
的列表中。 當我們將請求發送回客戶端時,必須在后端創建此列表。 這是我使用ExpressJS來啟用Authorization標頭的方法:
app.use((req, res, next) => {
// List of headers that are to be exposed to the XHR front-end object
res.header('Access-Control-Expose-Headers', 'Authorization');
next();
});
我在前端的初始代碼保持不變,並且現在顯示Authorization
標頭的console.log
。
整個文檔非常有趣,我以為我在API方面還不錯,但是在閱讀本文時我學到了很多:-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.