使用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;
        }
      })
    );