0

サーバー側で HTTP ステータス コードの値を設定し、呼び出し元の jQuery Ajax メソッドからこの値を読み取ろうとしています。戻りステータス コード 401 を強制しています。Chrome は HTTP ステータス コード 0 を表示します。一方、FF、IE、および Safari では、予期される HTTP ステータス コード 401 が表示されます。

jQuery Ajax 呼び出し:

/* change password */
var reqEmail = "?Email=" + getURLParameter('email');
var reqToken = "&ResetToken=" + getURLParameter('token');
var reqPassword = '&Password=' + password;
var reqPath = '../ws/visitor/SetPassword' + reqEmail + reqPassword + reqToken;

$.ajax({
  type: "POST",
  url: reqPath,
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  cache: false,
  complete: function (xhr) {
    console.log("Status: " + xhr.status);
    console.log("StatusText: " + xhr.statusText);
  }
});

Fiddler でキャプチャされた応答:

HTTP/1.1 401 Unauthorized
Cache-Control: private
Transfer-Encoding: chunked
Content-Type: application/json
Server: Microsoft-IIS/7.5
Date: Tue, 22 Oct 2013 19:03:34 GMT

Chrome コンソール ログ:

Status: 0
StatusText: error 

FireFox コンソール ログ:

Status: 401
StatusText: Unauthorized

C# 設定 HTTP ステータス コード:

HttpContext.Current.Response.StatusCode = 401;
HttpContext.Current.Response.TrySkipIisCustomErrors = true;
HttpContext.Current.Response.ContentType = "application/json";
HttpContext.Current.Response.End();

また:

Chrome は、HttpContext.Current.Response.StatusCode をその値に等しく設定すると、204、205、304 のステータス コードを表示します。

Chrome で HTTP ステータス コードの読み取りに問題がある理由を知っている人はいますか?

前もって感謝します。

4

0 に答える 0