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();

还:

当我将 HttpContext.Current.Response.StatusCode 设置为等于该值时,Chrome 将显示以下状态代码:204、205、304。

有谁知道为什么我无法在 Chrome 中读取 HTTP 状态代码?

提前致谢。

4

0 回答 0