【发布时间】:2013-11-12 13:25:39
【问题描述】:
我有一个 PhoneGap 应用程序正在与 C# 服务进行通信以获取其数据。用户必须登录才能访问其中的任何内容,因此我的控制器上有一个AuthorizeAttribute。这工作正常且正确,向我的应用程序抛出了一个问题。我的问题是,在我的 AuthorizeAttribute 中,我重写了 HandleUnauthorizedRequest 方法,它应该返回 401。事实上,它可能是,它只是Ajax 处理程序在我的覆盖方法返回之前命中错误函数。
授权属性
public class AppCustomAuthorization : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.HttpContext.Response.StatusCode = 401;
filterContext.HttpContext.Response.End();
base.HandleUnauthorizedRequest(filterContext);
}
}
阿贾克斯
$.ajax({
type: "GET",
url: url + "checkin/app/info",
dataType: "json",
success: function(d) {
// Do stuff
},
error: function (xhr, textStatus, errorThrown) {
app.showError(errorThrown); // Status code is 0
}
});
当我查看Network 请求时,我的获取请求似乎被取消。最初,我认为这是因为我的 authorize 属性导致它取消请求,但是,它似乎在它到达我的处理程序之前就取消了。
【问题讨论】:
-
找不到文档,但我很确定 401 被 jQuery.ajax 视为错误响应。
-
关心“事实上,可能是”启动fiddler并检查HTTP
-
@Liam 如问题中所述。取消了,在我的覆盖方法之前进入了ajax错误函数
-
那么你得到的 HTTP 响应代码是什么?
标签: c# javascript ajax asp.net-mvc-3 cordova