angular - Angular/RxJx - 在请求失败时访问响应标头
问题描述
假设我发出了一个 GET 请求并订阅了结果流。如果请求失败,我想访问响应的标头以将它们传递给我的错误报告工具。
传递给的错误handleError
包含它自己的标头对象,但即使我可以在浏览器中正常读取响应标头,它也始终为空。
我的理解是流会抛出一个与失败流不同的错误对象。
http.get('url').pipe(
catchError((err: HttpErrorResponse) => handleError(err))
).subscribe(...);
现在,我知道它catchError()
提供了第二个参数,名为catch,它是原始(失败的)流,但我不能传递或订阅它,因为我有可能创建一个无限循环的失败请求。
我错过了什么?
解决方案
事实证明 HttpErrorResponse 标头是空的,因为我没有在我的端点返回的响应中正确设置Access-Control-Expose-Headers -header。
将其设置为包含我想要访问的属性的键,使此标头可通过 HttpErrorResponse.headers 获得!
推荐阅读
- ruby-on-rails - 在 capistrano 中预编译资产时找不到 Rails 6.1 命令 webpack
- python - 多进程池不会在所有进程之前关闭并加入终止脚本
- python - 为什么 x % 5 == 0 结果是不能被 5 整除的数字
- python - Python(熊猫) - 基于一列对多列求和
- python - 访问 github 中保存的 Pickle 模型
- python - 我想安装一个 pip 包,但是发生了一些错误
- java - Spark 3.0 排序并应用于组 Scala/Java
- node.js - 如何使用云功能检查云存储中的文件路径是否有效?
- reactjs - 如何在 React js 中检测移动视图和移动应用程序视图
- html - 使用 CSS/HTML 删除特定元素的边距