Angular 4 - 无法在HttpErrorResponse中获取自定义HTTP标头

时间:2017-10-27 19:21:43

标签: angular

我有一个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标头,而不是某些替换标头。对任何和所有建议开放。谢谢!

1 个答案:

答案 0 :(得分:2)

HttpErrorResponse不仅仅是一个数组,它是一个复杂的对象。要获取您的网址,请使用其get方法。

var url = error.headers.get("x-login_page")