如何获取角度8中的响应头

时间:2019-09-05 14:32:22

标签: javascript angular typescript api http

嘿,我实现了一个GET请求的api 现在我想要的是Response Header值,但api响应中仅显示其中一些,但在Network标签中,每个值都显示 我不知道是什么问题

这是我的Http服务

pendingResultData(payload: Payload, headerConfig?: {}) {
const params = payload
  ? {
    type: payload.type,
    data_scopes: payload.data_scopes,
    observe: 'response',
    ...headerConfig
  }
  : { observe: 'response', ...headerConfig };
const reqUrl = '/api/data_capture';
return this.timerService.timer(this.httpService.getFullResponse(reqUrl, params));
}

这是我的拦截器

 intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
this.idToken = this.authService.getAccessToken() || '';
// cloning original request and set/add new headers
const authReq = req.clone({
  headers: this.idToken
    ? req.headers
      .set('Authorization', `Bearer ${this.idToken}`)
      .set('Access-Control-Allow-Origin', '*')
      .set('Content-Type', 'application/json')
      .set("Access-Control-Expose-Headers", "*")
    : req.headers,
  params: req.params
});
return next.handle(authReq);
}

现在标题出现在响应标题中,您可以在屏幕截图中看到

Netwrok Tab

我想要总计,当前页,每页,但是我在api响应中得到的标题是

headers: "content-length: 194
content-type: application/json; charset=utf-8
cache-control: max-age=0, private, must-revalidate"

我想知道我做错了什么,这是否是后端问题? 有什么帮助吗? 谢谢

2 个答案:

答案 0 :(得分:2)

您可以通过用户response.headers.get()方法访问它们。例如:

this.httpService.getFullResponse(reqUrl, params).subscribe(response=> {
  console.log(response.headers.get('per-page'));
});

答案 1 :(得分:0)

我认为您必须在后端响应中将自定义标头添加到“ access-control-expose-headers”。在上方的屏幕截图中,看起来它们不在列表中。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headers

https://github.com/angular/angular/issues/5237#issuecomment-441081290

相关问题