簡體   English   中英

Angular 2 http Observable請求未返回響應頭

[英]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網絡控制台響應標頭

這是“肯定存在授權”的Chrome控制台中的響應

Console.log結果

null值為res.headers.get("Authorization")如您所見,標頭列表為空。 Chrome控制台

非常感謝您的幫助!

我已經找到解決問題的方法。 事實證明,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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM