サーバー側で 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 ステータス コードの読み取りに問題がある理由を知っている人はいますか?
前もって感謝します。