比方说,我进行GET请求并订阅结果流。 如果请求失败,我想访问响应的标头以将其传递给我的错误报告工具。
传递给handleError
的错误包含它自己的headers-object,尽管我可以在浏览器中很好地读取响应标头,但该错误始终为空。
我的理解是,该流将抛出一个错误对象,该对象不同于失败的流。
http.get('url').pipe(
catchError((err: HttpErrorResponse) => handleError(err))
).subscribe(...);
现在,我知道catchError()
提供了另一个名为 caught 的参数,它是原始的(失败的)流,但是我不能将其传递或订阅它,因为我冒着创建infinite loop of failing requests的风险。
我想念什么?
答案 0 :(得分:0)
事实证明,HttpErrorResponse标头为空,因为我没有在端点返回的响应中正确设置 Access-Control-Expose-Headers 标头。
将其设置为包含我要访问的属性的键,可以通过HttpErrorResponse.headers使用此标头!