代码之家  ›  专栏  ›  技术社区  ›  Jamshed

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

  •  0
  • Jamshed  · 技术社区  · 6 年前

    我正在尝试访问从POST响应标头接收的CSRF令牌,我需要在我的应用程序发出任何进一步请求时将其发送回。我能够向下钻取响应流,直到可以访问带有“CSRFPreventionAlt”标记的[[条目]]。它显示在控制台中,但当尝试访问时,它显示为未定义。

    尝试(&T);已测试: 我尝试了“get”方法来访问标题,但没有成功。

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

    我看到了其他一些问题,这些问题表示您无法访问标头值,但如果我可以在控制台中访问标头,那么我肯定可以访问令牌&将其分配给变量。

    解决这个问题的方法可能也会帮助其他可能在应用程序中面临同样情况的人。欢迎任何帮助!!

    enter image description here enter image description here

    4 回复  |  直到 6 年前
        1
  •  0
  •   Hrishikesh Kale    6 年前

    您需要映射您的响应以获得如下方法

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

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

    请检查 here

        2
  •  0
  •   delou    6 年前

    您可以尝试以下操作:

    Map.forEach((value: boolean, key: string) => {
        console.log(key, value);
    });
        3
  •  0
  •   BSchnitzel    6 年前

    我相信这个问题已经被问过了,所以看看这个

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

    我会把这个写进评论里,但我还没有足够的影响力来评论抱歉

        4
  •  0
  •   Jamshed    6 年前

    在调用json()方法之后,我调用了get方法,基本上我可以在原始响应对象中访问csrf值,如下所示:

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

    还要确保您的服务已将访问控制允许标头的标头字段设置为“*”&访问控制允许原点。

    还要添加“访问控制允许凭据:true”。