我有一个ASP.NET Web API。我正在使用Angular 4做一个简单的http请求:
getInfo(url: string)
{
this.http.get<MyResponse>(url).map((resultModel: MyResponse) => {
return resultModel;
});
}
我因此同意回应:
this.getInfo()
.subscribe(
result => {
if(wasSuccess(result))
{
do things
},
error => {
if(error.status == 401)
{
var url = error.headers["x-login_page"];
window.location.href = url;
}
}
);
我已经在ASP.NET Web API控制器中启用了CORS。
查看Chrome中的网络响应,我看到CORS允许的位置正确,我想要阅读的自定义标头条目(x-login_page)也是如此:
Screenshot of Chrome Network Output
但是,当我尝试使用以下命令访问x-login_page的自定义标头值时
var url = error.headers["x-login_page"];
网址未定义。当我在Chrome调试器中查看错误对象时,我看到该错误对象是HttpErrorResponse对象:
Screenshot HttpErrorResponse
如果我展开标题,您会发现它们与网络响应中显示的标题完全不同:
Screenshot headers
我无法找出一种方法来获取错误捕获中的实际http标头,而不是某些替换标头。公开接受所有建议。谢谢!
最佳答案
HttpErrorResponse不仅是一个数组,而且是一个复杂的对象。要获取您的网址,请使用其get
方法。var url = error.headers.get("x-login_page")
关于angular - Angular 4-无法在HttpErrorResponse中获取自定义HTTP header ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46982075/