Angular 4 省略 HTTP 错误代码

Angular 4 omitting HTTP error codes

我有这样一个 api 电话:

        this.http.get(url)
            .subscribe(results => {
                ...
            }, (err: any) => {
                console.log('raw error =>', err);
        });

Chrome上的错误显示502 (Bad Gateway),但Angular返回的错误显示status = 0,我想在发生此错误时向用户显示消息,但我怎样才能正确捕获 http 错误?

我一般不订阅服务,订阅组件。但这是我在授权服务中的代码。

getUser(userId: string) {
    const token = localStorage.getItem('token');
    const headers = new Headers({'Authorization': token});
    return this._http.get('http://localhost:3000/user/' + userId, {headers: headers})           
        .map(response => {
            const data = response.json().obj;
            let user = new User (data.email, data.password, 
                                data.firstName, data.lastName, 
                                data.messages);
            return user;
        })  
        //.catch(error => Observable.throw(error.json()));
        .catch((err) => this.handleError(err));     
}
private handleError(error: Response) {
    if(error.status == 403 ){
        console.error(error + 'Session over. Please log in to continue.');
    }
    console.error(error + 'Session over. Please log in to continue.');
    this._router.navigate(['/']);
    this.logout();

    return Observable.throw(error.json().error || "Server error");
}

在我的组件中,应该是:

this.http.getUser(string: string)
  .subscribe(
     result => { this.result = result;    
   }, 
     error => { console.log('raw error =>', err);
 });

如果我可以成为你的助手,请告诉我。

首先,HTTP 状态代码 0 是 not really a thing。它只是说没有收到来自服务器的响应,无论出于何种原因。

其次,HTTP 502 Bad Gateway表示您调用的服务收到来自上游服务器的无效响应

第三,在您的具体情况下,我看到了 Access-Control-Origin 问题。 This answer 详细介绍如何解决它。