【问题标题】:Angular 4 - Cannot get custom HTTP header in HttpErrorResponseAngular 4 - 无法在 HttpErrorResponse 中获取自定义 HTTP 标头
【发布时间】:2018-04-09 11:23:10
【问题描述】:

我有一个 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 标头,而不是一些替代标头。接受任何和所有建议。谢谢!

【问题讨论】:

    标签: angular


    【解决方案1】:

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

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

    【讨论】:

    • 没问题!如果您没有使用具有自动完成功能的 IDE,则不是很明显。如果它对您有用,请不要忘记将其标记为正确答案;)
    猜你喜欢
    • 2018-09-26
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 2018-08-11
    相关资源
    最近更新 更多