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

5
我有一个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)也正确,我想读取它们: Chrome网络输出的截图 然而,当我尝试使用以下代码访问x-login_page的自定义标头值时:
var url = error.headers["x-login_page"];

URL未定义。当我在Chrome调试器中查看错误对象时,发现错误对象是HttpErrorResponse对象:

截图 HttpErrorResponse

如果我展开标头,您可以看到它们与网络响应中显示的标头完全不同:

截图 标头

我无法找出在错误捕获中获取实际http标头的方法,而不是一些替换标头。欢迎任何建议。谢谢!

1个回答

7

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

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


没问题!如果你没有使用带自动完成功能的集成开发环境,这并不是很明显。如果这个方法对你有用,请别忘了将其标记为正确答案 ;) - jamesthollowell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接