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

时间:2018-03-22 09:23:47

标签: javascript angular header csrf csrf-protection

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

尝试过&测试 我已经尝试了“get”方法来访问标题,但它没有用。

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

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

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

enter image description here enter image description here

4 个答案:

答案 0 :(得分:0)

您需要将响应映射到get方法,如

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

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

请检查here

答案 1 :(得分:0)

您可以尝试以下操作:

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

答案 2 :(得分:0)

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

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

我会把它放在评论中,但我还没有足够的影响力发表评论,但很抱歉

答案 3 :(得分: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-Credentials:true”。