为什么Angular处理HTTP错误时headers对象为空
我的API(.Net Core)返回每个响应的相关id头。这在管道的开始和结束处进行处理,以唯一地标识与API的每个交互。如果我的应用程序抛出导致HTTP 500错误的异常,就会发生这种情况 来自.Net核心API日志的样本为什么Angular处理HTTP错误时headers对象为空,angular,asp.net-web-api,Angular,Asp.net Web Api,我的API(.Net Core)返回每个响应的相关id头。这在管道的开始和结束处进行处理,以唯一地标识与API的每个交互。如果我的应用程序抛出导致HTTP 500错误的异常,就会发生这种情况 来自.Net核心API日志的样本 2017-08-27 18:40:11.1836 | Microsoft.AspNetCore.Hosting.Internal.WebHost | INFO | 1212dcbb-b2dc-46dd-a66f-2fa3c76f13 |请求在3526.1966ms 500中
2017-08-27 18:40:11.1836 | Microsoft.AspNetCore.Hosting.Internal.WebHost | INFO | 1212dcbb-b2dc-46dd-a66f-2fa3c76f13 |请求在3526.1966ms 500中完成
输出中的GUID是相关id,您可以在格式化消息的末尾看到最终响应代码500
角度字体脚本代码
我的Angular应用程序中的代码非常简单
return this.http.post(
uri,
body)
.map(response => {
// TODO: Handle responses
})
.catch((error:any) => {
// TODO: Handle errors
});
但是,如果服务器返回500错误,则对错误
对象的调查将生成一个头
对象,该对象为空,使我无法访问从服务器返回的任何头
我可以在Chrome开发者工具中看到响应中有标题
有没有办法在出现错误情况时访问这些标题?这是CORS的问题。我需要在API配置中添加以下内容:
app.UseCors(builder => builder
.WithOrigins(
"...",
"...")
.AllowAnyMethod()
.AllowAnyHeader()
.WithExposedHeaders("CorrelationId")
.AllowCredentials());
注意添加了。带有exposedheaders(“CorrelationId”)
。在添加此角点后,可以看到标题
感谢柯克·拉金和这篇帖子:这听起来像是CORS的问题。请参阅此帖子:。您确定服务会将响应对象附加到头中吗?