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

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

我正在尝试访问从 POST 响应 header 收到的 CSRF 令牌,我需要将其与我的应用发出的每个进一步请求一起发回。我能够向下钻取响应流,直到我可以访问具有 "csrfpreventionsalt" 令牌的 [[Entries]]。它显示在控制台中,但在尝试访问时显示为未定义。

久经考验: 我试过 "get" 方法来访问 header 但它没有用。

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

我在 SO 上看到其他问题说您无法访问 header 值但是如果我可以在控制台中访问 header 那么我肯定应该能够访问令牌并将其分配给变量。

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

您需要映射您的响应以获取类似

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

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

请检查here

您可以尝试以下方法:

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

我相信这个问题已经被问到所以检查一下

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

我在调用 json() 方法后调用了 get 方法,基本上我可以在原始响应 object 中访问它后获取 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 的 header 字段设置为“*”。

同时添加您的 "Access-Control-Allow-Credentials: true".