簡體   English   中英

無法從Angular 4中的POST響應標頭訪問屬性

[英]Can't access property from POST response headers in Angular 4

我正在嘗試訪問從POST響應標頭收到的CSRF令牌,我需要將其與應用程序中的所有其他請求一起發送回去。 在訪問具有[csrfpreventionsalt“令牌的[[Entries]]之前,我可以深入研究響應流。 它會顯示在控制台中,但在嘗試訪問時會顯示為未定義。

經過嘗試和測試:我已經嘗試使用“ get”方法訪問標頭,但是它不起作用。

var csrf = res.headers.get('csrfpreventionsalt');

我在SO上看到了其他問題,這些問題說您無法訪問標頭值,但是如果可以在控制台中訪問標頭,則一定可以訪問令牌並將其分配給變量。

解決此問題的方法也可能對其他可能在其應用程序中遇到相同情況的人有所幫助。 歡迎任何幫助!

在此處輸入圖片說明 在此處輸入圖片說明

您需要映射您的響應以獲取類似的方法

this.http.get('…', { observe: 'response' });

按照新的httpclient的角度,如果您仍然對整個Response對象感興趣,則可以觀察它

在這里檢查

您可以嘗試以下方法:

 Map.forEach((value: boolean, key: string) => { console.log(key, value); }); 

我相信這個問題已經問過了,請檢查一下

Angular 4.3.3 HttpClient:如何從響應的標頭獲取值?

我只是將其添加到評論中,但我沒有足夠的影響力來發表評論,但很抱歉

我在調用json()方法之后調用了get方法,基本上我可以在原始響應對象中訪問它之后獲得csrf值,如下所示:

private extractLoginData = (res: Response) => {
    this.csrfToken = res.headers.get('csrfPreventionSalt');
    let body = res.json();
    return body;
}

還要確保您已將服務的標題字段設置為Access-Control-Allow-Headers和Access-Control-Allow-Origin的“ *”。

還要添加“ Access-Control-Allow-Credentials:true”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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