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 详细介绍如何解决它。
我有这样一个 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 详细介绍如何解决它。