如何从HTTP Post读取状态代码?

时间:2017-11-17 15:39:26

标签: angular typescript http-headers

我向后端发送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}

我如何根据发布的代码达到此目的,或者我正在运行的错误在哪里?

1 个答案:

答案 0 :(得分:0)

这个问题已经解决了......它与CORS问题有关。修复后,我能够从响应中读取状态代码。

以下文章Restricting access to a server using CORS确实非常有用。