使用HttpClient时如何捕获所有标头-Angular

使用javascript XMLHttpRequest,我可以轻松地使用getAllResponseHeaders()方法获取标头

var req = new XMLHttpRequest();
req.open('GET', document.location, false);
req.send(null);
var headers = req.getAllResponseHeaders().toLowerCase();

得到类似以下结果:

accept-ranges: bytes
access-control-allow-origin: *
content-length: 4546
content-type: text/html; charset=UTF-8
date: Mon, 18 May 2020 04:24:30 GMT
etag: W/"11c2-u8XhnlVk5uwUwaHTXsnarcbbBQw"
x-powered-by: Express

现在,我想在Angular中使用它,但是当我使用HttpClient启动请求时,我无法弄清楚如何获取这些值。

评论
苦涩占内心
苦涩占内心

您可以在angular中使用http-interceptor。 拦截器是对每个HTTP请求或响应执行某些工作的方式。

在这里,您可以获取请求的标头和http请求的响应

请检查以下链接,例如:

https://blog.angulartraining.com/http-interceptors-in-angular-61dcf80b6bdd

在拦截器的以下部分(响应后)

return next.handle(authReq).pipe(
  // We use the map operator to change the data from the response
  map(resp => {
     // Several HTTP events go through that Observable 
     // so we make sure that this is a HTTP response
     if (resp instanceof HttpResponse) {
        //extract your headers here
       let newHeaders = resp.headers;
    }
  })
);
点赞
评论