2017-10-27 20 views
2

私はASP.NET Web APIを持っています。私は、単純なHTTPリクエストを行うために角度4を使用しています:角4 - HttpErrorResponseでカスタムHTTPヘッダーを取得できません

getInfo(url: string) 
{ 
    this.http.get<MyResponse>(url).map((resultModel: MyResponse) => { 

    return resultModel; 
    }); 
} 

私は以下のようなものを応答を購読する:

this.getInfo() 
     .subscribe(
      result => { 
       if(wasSuccess(result)) 
       { 
        do things 
       }, 
      error => { 
        if(error.status == 401) 
        { 
         var url = error.headers["x-login_page"]; 
         window.location.href = url; 
        } 
       } 
    ); 

私はASP.NETのWeb APIコントローラでCORSを有効にしています。

Screenshot of Chrome Network Output

しかし、私はCORSが正しくありことができます、と私は読んでもらいたいカスタムヘッダーエントリ(X-login_page)があることがわかりChromeでネットワークの応答を見てみると

x-login_pageのカスタムヘッダー値にアクセスしようとしたとき

var url = error.headers["x-login_page"]; 

URLは未定義です。私はクロームのデバッガでエラーオブジェクトを見てみると、私はエラーオブジェクトがHttpErrorResponseオブジェクトであることを参照してください。

Screenshot HttpErrorResponse

私はヘッダを展開すると、あなたは彼らがどのような方法で似ていないことがわかりますネットワーク応答に示すヘッダ:

Screenshot headers

は、私はむしろ、いくつかの置換ヘッダよりも、エラーキャッチに実際のHTTPヘッダを取得する方法を把握することはできません。すべての提案に開放されています。ありがとう!

答えて

1

HttpErrorResponseは単なる配列ではなく、複雑なオブジェクトです。あなたのURLを取得するには、getメソッドを使用してください。

var url = error.headers.get("x-login_page")

+0

ああ愛のために....ありがとう! – user2047553

+0

問題ありません!オートコンプリート付きのIDEを使用していない場合は、それほど明白ではありません。それがあなたのために働くなら正解とマークすることを忘れないでください;) – jamesthollowell

関連する問題