如何在Angular 4中禁止http错误响应

时间:2017-06-06 00:20:32

标签: angular http zone.js

我已经创建了一个用于处理用户登录的服务(通过点击后端服务器,该服务器在成功进行身份验证时以JWT响应)。

  login(username: string, password: string): Observable<boolean> {

    const headers = new Headers({
      'X-Requested-With': 'XMLHttpRequest',
      'Content-Type': 'application/x-www-form-urlencoded',
      'Authorization': 'Basic xxxxxxxxxxxxxxxxxxxxxxxx'
    });
    const options = new RequestOptions({headers: headers});

    const body = new URLSearchParams();
    body.set('username', username);
    body.set('password', password);
    body.set('grant_type', 'password');

    return this.http.post('http://localhost:8080/api/oauth/token', body, options)
      .map((response: Response) => {
        if (response.json() && response.json().access_token) {
          window.localStorage.setItem('username', username);
          window.localStorage.setItem('id_token', response.json().access_token);
          window.localStorage.setItem('refresh_token', response.json().refresh_token);
          return true;
        } else {
          return false;
        }
      })
      .catch(this.handleError);
  }

它的工作原理是,它成功地向后端服务器执行发布请求,并正确检索一个令牌,然后该令牌可用于验证未来的请求。但是,在用户输入错误密码的情况下,服务器以400状态响应。虽然我正在捕捉到这种状态(我已通过记录内部信息&#34; handleError&#34;验证了这一点,但Angular还是将默认的POST错误打印到控制台。具体来说:

zone.js:2224 POST http://localhost:8080/api/oauth/token 400 ()

如何阻止它这样做?我正在捕捉错误,正确处理错误但仍然将zone.js错误打印到Chrome控制台。

0 个答案:

没有答案