我向后端发送POST请求并尝试读取状态代码,但我运行以下结果:status-code:0
这是我的职能:
服务
signIn(uname:string, pass:string): Observable<any> {
let headers = new Headers({
'Content-Type': 'application/json',
'Uname':uname,
'Password':pass
});
let opt = new RequestOptions({ headers: headers, withCredentials: true });
let data = {};
return this.http.post( url, data, opt )
.map(res => {
return res.json();
})
.catch( this.handleError );
}
private handleError(error:Response | any){
let details = error.json();
console.log('STATUS CODE: ' + error.status);
return Observable.throw(details || error);
}
组件:
login(uname: string, pass: string) {
this.user.signIn(uname, pass).subscribe(
res => {},
err => {
console.log('ERR: ' + JSON.stringify(err));
// returns {"isTrusted":true}
}
);
}
我希望能够阅读状态代码,例如404,401或403等 在我的情况下,我可以在Chrome控制台中看到状态404 - 所以我想根据状态代码错误显示errorMsg。
当我将控制台切换到:Network
时,我进入Response
标签:
{"code":404,"reason":"Not Found","message":"Resource 'user/auth' not found"}
如果我在error
输出handleError()
,我会得到:
handleErrorObservable: {"_body":{"isTrusted":true},"status":0,"ok":false,"statusText":"", "headers":{},"type":3,"url":null}
我如何根据发布的代码达到此目的,或者我正在运行的错误在哪里?
答案 0 :(得分:0)
这个问题已经解决了......它与CORS问题有关。修复后,我能够从响应中读取状态代码。
以下文章Restricting access to a server using CORS确实非常有用。