我正在尝试访问从POST响应标头收到的CSRF令牌,我需要从我的应用程序的每个进一步请求发送回来。我能够深入了解响应流,直到我可以访问具有“csrfpreventionsalt”标记的[[Entries]]。它会在控制台中显示,但在尝试访问时显示为未定义。
尝试过&测试 我已经尝试了“get”方法来访问标题,但它没有用。
var csrf = res.headers.get('csrfpreventionsalt');
我已经在SO上看到了其他问题,说你无法访问标题值但是如果我可以在控制台中访问标题,那么肯定我应该能够访问标记&将其分配给变量。
解决此问题可能有助于其他人在他们的应用中遇到相同的情况。欢迎任何帮助!!
答案 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”。