无法从Angular 4中的POST响应标头访问属性

问题描述 投票:0回答:4

我正在尝试访问从POST响应头接收到的CSRF令牌,我需要从我的应用程序的每个进一步请求发送回来。我能够深入了解响应流,直到我可以访问具有“csrfpreventionsalt”标记的[[Entries]]。它会显示在控制台中,但在尝试访问时显示为未定义。

尝试和测试:我尝试了“get”方法来访问标题,但它没有用。

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

我已经在SO上看到了其他问题,说你无法访问标题值但是如果我可以在控制台中访问标题,那么我肯定能够访问标记并将其分配给变量。

解决这个问题可能有助于其他人在他们的应用程序中遇到相同的情况。欢迎任何帮助!!

enter image description here enter image description here

javascript angular header csrf csrf-protection
4个回答
0
投票

你需要将你的响应映射到get方法

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

根据角度中的新httpclient,如果你仍然对整个Response对象感兴趣,你可以观察它

请检查here


0
投票

您可以尝试以下方法:

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

0
投票

我相信这个问题已经在SO上查询了

Angular 4.3.3 HttpClient : How get value from the header of a response?

我本来只是把它放在评论中,但我没有足够的影响力评论只是抱歉


0
投票

我在调用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”。

© www.soinside.com 2019 - 2024. All rights reserved.