在角度6中检索标头有问题吗?

时间:2018-11-14 22:59:23

标签: angular header http-headers observable

这是我的service

executeProcess(): Observable<any> {
    return this._httpClient.post(this.baseUrl + '/api/survey/process/execute', {}, { observe: 'response', responseType: 'text' as 'text' });
}

在我的组件中,我这样称呼它

this._httpService.executeProcess().subscribe(res => {
      console.log(res);
}

这是我的res.headers

{
  "normalizedNames": {},
  "lazyUpdate": null,
  "headers": {}
}

具有一个为空的标头对象。在此api的后端,我将发送一个名为location的标头,该标头显示在Chrome的“网络”标签中。一切都通过chrome的网络标签运行,但是从角度来看,我无法检索此标头。

1 个答案:

答案 0 :(得分:0)

您是否尝试过阅读完整的回复?

HttpClient reading the full response

showConfigResponse() {
  this.configService.getConfigResponse()
    // resp is of type `HttpResponse<Config>`
    .subscribe(resp => {
      // display its headers
      const keys = resp.headers.keys();
      this.headers = keys.map(key =>
        `${key}: ${resp.headers.get(key)}`);

      // access the body directly, which is typed as `Config`.
      this.config = { ... resp.body };
    });
}

编辑:

还尝试在后端使用Access-Control-Expose-Headers公开 location 标头。请参阅此链接以供参考: Using CORS

Access-Control-Expose-Headers(可选)-XMLHttpRequest 2对象具有getResponseHeader()方法,该方法返回特定响应头的值。在CORS请求期间,getResponseHeader()方法只能访问简单的响应头。简单的响应头定义如下:

Cache-Control
Content-Language
Content-Type
Expires
Last-Modified
Pragma

如果希望客户端能够访问其他标头,则必须使用Access-Control-Expose-Headers标头。此标头的值是您要公开给客户端的响应标头的逗号分隔列表。