首页 > 解决方案 > Angular/RxJx - 在请求失败时访问响应标头

问题描述

假设我发出了一个 GET 请求并订阅了结果流。如果请求失败,我想访问响应的标头以将它们传递给我的错误报告工具。

传递给的错误handleError包含它自己的标头对象,但即使我可以在浏览器中正常读取响应标头,它也始终为空。

我的理解是流会抛出一个与失败流不同的错误对象。

http.get('url').pipe(
  catchError((err: HttpErrorResponse) => handleError(err))
).subscribe(...);

现在,我知道它catchError()提供了第二个参数,名为catch,它是原始(失败的)流,但我不能传递或订阅它,因为我有可能创建一个无限循环的失败请求

我错过了什么?

标签: angularerror-handlingheaderrequestrxjs

解决方案


事实证明 HttpErrorResponse 标头是空的,因为我没有在我的端点返回的响应中正确设置Access-Control-Expose-Headers -header。

将其设置为包含我想要访问的属性的键,使此标头可通过 HttpErrorResponse.headers 获得!


推荐阅读