角4 ommiting HTTP错误代码

角4 ommiting HTTP错误代码

问题描述:

我有一个API调用是这样的:角4 ommiting HTTP错误代码

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

在Chrome的错误显示502 (Bad Gateway),但是从角显示status = 0返回的错误,我想展现消息给用户时这个错误发生,但我怎么能正确地赶上http错误?

enter image description here

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

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

第三,在您的具体情况下,我看到一个Access-Control-Origin问题。 This answer进入如何解决它的细节。

+0

这显然不是问题的答案,而仅仅是某人做错事的答案。我有相同的情况和你的答案(标记为已解决?)没有帮助,对不起:( – ramden

我通常不会在服务订阅,但在分量。但这是我在验证服务中的代码。

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); 
}); 

让我知道,如果我能更多的助手。

+0

你可以尝试error.status == 0或error.status == 502 –

+0

像我的第一个评论(接受的解决方案) - 这不是正确的答案。 – ramden