【问题标题】:Angular2 authenticated web request get error messageAngular2经过身份验证的Web请求得到错误消息
【发布时间】:2016-05-06 10:59:12
【问题描述】:

我正在使用一个安全的 api,它要求我在每个请求上发送一个 Authorization 标头,这工作正常。但是我在处理 401 响应时遇到了问题。

我对 API 的调用如下:

let headers: Headers = new Headers();            
headers.append('Authorization', 'Bearer ' + {myauthtoken});

let request = this.http.get(Utils.getUrl('/somesecuredmethod'), { headers: headers });
        request.subscribe(
            result => { this.setLoginDetails(result); },
            error => {
                this.loginFailed = true;
                this.reasonLoginFailed = error;
                return true;
            });

在错误中我可以看到响应代码 401,但是我还在 chrome 控制台中看到以下内容

GET https://localhost/somesecuredmethod 401 (User not found in database.)

有谁知道我怎样才能获得角度的消息文本?

谢谢,乔恩。

编辑:

我之前使用纯 ajax 调用了同样的方法,如下所示,可以得到错误文本。

$.ajax({
    url: baseurl + "/somesecuredmethod",
    method: "get",
    headers: { 'Authorization': 'Bearer ' + accessToken }
}).done(function (data) {
    // do something with the success
}).fail(function (jqXHR, status, err) {
    $("#loading_application").addClass("hidden");
    $("#login_failed_reason").text(err);        <--- here I can the error text shown in the dev console
    $("#login_failed").removeClass("hidden");
});

【问题讨论】:

    标签: angular angular2-http


    【解决方案1】:

    如果是有效载荷中的文本消息,您可以在错误上使用text 方法:

    let request = this.http.get(Utils.getUrl('/somesecuredmethod'), { headers: headers });
    request.subscribe(
      result => { this.setLoginDetails(result); },
      error => {
        this.loginFailed = true;
        this.reasonLoginFailed = error.text(); // <-----
        return true;
      });
    

    【讨论】:

    • 抱歉,这不起作用。 text 方法返回未定义。我刚刚在提琴手中捕获了请求,并且错误文本包含在标头中。
    猜你喜欢
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多