2017-10-27 7 views
1

서비스 요청이있을 때 Angular 4 코드에서 오류를 처리하려고합니다. 내 요구 사항은 403, 200 등의 오류 코드를 기반으로 일부 작업을 수행하는 것입니다.Http 응답 error.status가 0으로 수신되었지만 실제 상태가 아닙니다.

서비스 요청의 결과를 얻으려면 Observable에 가입하고 있습니다. 그러나 오류 코드를 읽을 때마다 오류 응답에 '0'만 표시됩니다. 이 호출 후

getStatus():Observable<any>{ 
    let options = new RequestOptions({ headers: this.Headers }); 
    return this.http.get(this.Url,options) 
     .map((res) => res.json()) 
     .catch((err:Response) => {return Observable.throw(err.json())}) 
    } 

, 내가 오류를 잡으려고 난 단지 상태 코드로 '0'을 얻을 아닌 실제 하나의 서비스에서 반환. 하지만 브라우저 콘솔에서 실제 상태를 볼 수 있습니다. 나는 상태 코드를 읽으려고 할 때하는에 호출이 실패 때문에
this.service.getStatus() 
     .subscribe((status => { 
     this.status = status.Status; 
     this.toggleflag = (this.status === 'Yes' ? true : false); 
     } 
    )) 
    .catch(error=> this.redirectToLoginPage(error)); 

지금 리디렉션 기능에, 난 항상 0이 아닌 실제 상태를 가져옵니다.

private redirectToLoginPage(error) { 

    if(error.message == 403){ 
     localStorage.clear(); 

     this.router.navigateByUrl('https://' + window.location.hostname); 
// the code continues 

저는 오랫동안이 문제로 어려움을 겪었습니다. 어떤 도움을 주시면 감사하겠습니다. 미리 감사드립니다.

은 거짓의 성공 0이 경우

Response {_body: ProgressEvent, status: 0, ok: false, statusText: "", headers: Headers, …} 
headers 
: 
Headers {_headers: Map(0), _normalizedNames: Map(0)} 
ok 
: 
false 
status 
: 
0 
statusText 
: 
"" 
type 
: 
3 
url 
: 
null 
+0

"브라우저 콘솔에서 실제 상태를 봅니다."- 또는 더 나은 점은 무엇을 의미하는지 나타냅니다. – Amit

+0

일반 헤더 아래에서 네트워크 탭으로 이동하면 상태 코드 : 403 또는 무엇인가 나타납니다. – DP3

답변

1

문제를 발견했습니다. 내 로컬 컴퓨터에서 코드를 실행할 때 항상 상태 코드 '0'을 반환합니다. 코드가 클라우드 서버에 배포되면 올바른 상태 코드를 모두 파생시키고 해당 오류 처리를 수행 할 수 있습니다.

0

오류를보고 던져를 사용하십시오 잡힌 응답입니다 :

당신이 옵션을 사용하여 요청을 보낼 필요가
throw Observable.throw(resp); 
+0

여전히 그래요. resp.json()을 제거한 후에도 동일한 상태 코드를 얻습니다. – DP3

+0

Response {_body : ProgressEvent, status : 0, ok : false, statusText : "", headers : Headers, ...} 헤더 : 헤더 {_headers : Map 0), _normalizedNames :지도 (0)} 확인 : 거짓 상태 : 하는 statusText : "" 유형 : URL : 널 – DP3

0

:

{observe:'response'} 헤더 및 상태 코드에 대한 전체 응답을 얻으려면

+0

내가 할 경우에도 여전히 0를 얻을 –