2016-04-30 10 views
0

Web APIへのCORS Ajax呼び出しがあります。 、私はレスポンスヘッダを取得することはできませんUNAUTHORIZEDエラーが発生した場合、xhrオブジェクトで使用できるヘッダーがありません。 - IE10

クライアントで
var msg = new HttpResponseMessage(HttpStatusCode.Unauthorized) { ReasonPhrase = "Oops!!!" }; 
throw new HttpResponseException(msg); 

みました:私はスローメッセージハンドラを持って

error: function (xhr, error) { 
var result = xhr.getResponseHeader("Response"); 

をしかし、結果はNULLであり、他のheadesが用意されていません。 デバッガは正しく401を表示します!

権限のない例外をサーバーと別に返す必要がありますか?

更新: ヘッダーを取得するために、HttpResponseExceptionにOriginヘッダーを追加するのを忘れていました。

しかし、IE10で、私は任意のヘッダ、エラーメッセージのみ

"エラー"

どのように私はIE10を使用した場合、起こったかを知ることができますを得ることはありませんか? Hereは関連する質問です。

答えて

0

私は401応答を返すときにヘッダーを取得できません。 代わりにNoContent StatusCodeが返されます。これは、AJAX成功イベントハンドラをトリガします。 今私はそれがIE 10で動作させるために、成功のEventHandlerに(私は手動でサーバー側で追加)レスポンスヘッダ「応答」をチェックする必要があります。

サーバー:

var msg = new HttpResponseMessage(HttpStatusCode.NoContent) { ReasonPhrase = "UNAUTHORIZED" }; 
msg.Headers.Add("RESPONSE", "401"); 
AddCORSHeaders(msg.Headers, request); 
return await Task.FromResult(msg); 

クライアント:

error: function (jqXhr, error) { 
      var isAuth= jqXhr.getResponseHeader("Response"); 

今、私は値401

と "レスポンス" ヘッダを取得します

誰かがより良いアプローチをしている場合、私は答えを除きます!

IE10では、ajaxエラーイベントハンドラはreadyState = 0とstatus = ""を取得します。 Chromeでは401とreadyState = 4が得られます。

関連する問題