2017-11-17 6 views
0

I'amバックエンドにPOSTリクエストを送信するとステータスコードを読み取るしようと、私は次のような結果に実行します。ここではstatus-code:0HTTP Postからステータスコードを読み取る方法は?

は私の機能である:

サービス:

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"} 

そしてI出力handleError()errorは、私が出た場合:

handleErrorObservable: {"_body":{"isTrusted":true},"status":0,"ok":false,"statusText":"", "headers":{},"type":3,"url":null}

どのようにすることができます私は投稿コードに基づいてこれに到達するか、または私が実行している間違いはどこですか?

+0

'hanldeError'メソッドは期待どおりに実行されていますか?もしそうなら、単に 'console.log(error)'とそれを調べてレスポンスコードを抽出する方法を理解してください。あなたが必要とするものは 'error.code'かもしれないようです。 – BeetleJuice

+0

確か...私はすでにこれを試しました。 'レスポンスを伴うレスポンス:URL:nullの場合0 ' したがって、' error.code'はこの場合 'undefined'になります。 –

答えて

0

問題は解決しました。それは実際にCORSの問題と関係していました。それを修正した後、レスポンスからステータスコードを読み取ることができました。

次の記事Restricting access to a server using CORSは本当に役に立ちました。

関連する問題