angular 5 httpclient,在 post 上,响应不 return 自定义 headers,仅 return 响应 object

angular 5 httpclient , on post , the response does not return custom headers, only returns response object

在使用 Angular 5 个通用 httpClient 进行 http post 调用时,我没有得到实际的 http headers。我在请求中传递 observe: 'response' 以获取完整响应(默认情况下 httpClient returns 只有 body 响应)。

我想从 http header 响应中读取 csrftoken 值。我可以使用 chrome 浏览器网络视图看到 csrftoken 在响应 headers 中可用。

但是当我阅读Angular中的httpClient响应时同样不可用。

 post(inURL, data, config = undefined) {
    let headers, options;
    if (config){
        options = config;
    } else {
        //headers = this.getDefaultHeader();
        //options = new RequestOptions({ headers: headers });
        options = httpOptions;
    }
    options = { ...options, observe: 'response' };

    let action = this.httpService.post(inURL, data, options);
    return new Promise((resolve, reject) => {
        action.subscribe(
            response => resolve(response),
            error => {
                this.interceptError(error);
                reject(error);
            }
        );
    });

}

并且响应 headers object 在 chrome 调试器上调试时看起来像这样,如您所见,csrftoken 不可用作响应 [=40= 的键]

这是我访问 httpheaders

   let headers: HttpHeaders = response.headers;
    if (headers && headers['csrftoken']) {
        let token: String = headers.get('csrftoken');
    }

正如评论中已经建议的那样,您无法检查 header 是否存在您这样做的方式。您需要使用 has 方法。您的代码应如下所示:

let headers: HttpHeaders = response.headers;
if (headers && headers.has('csrftoken')) {
   let token: String = headers.get('csrftoken');
}