【问题标题】:Ajax request hitting error function before HandleUnauthorizedRequestHandleUnauthorizedRequest 之前的 Ajax 请求命中错误函数
【发布时间】: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


【解决方案1】:

这可能是因为同源策略。看看这个:

http://docs.phonegap.com/en/1.9.0/guide_whitelist_index.md.html

【讨论】:

  • Same Origin Policy无关。我正在禁用安全设置的 Chrome 上对此进行测试,但 +1 因为它可能是未来其他人的解决方案。
  • 哦原来是因为这个? :)
  • 不,这是因为我的回答中的原因。但很可能有同样问题的人会寻找与我相反的答案。我宁愿你是他们第一个看到的。
【解决方案2】:

只是为了结束完整的问题,我看到响应代码 0 的原因是:

“0”状态码通常表示用户导航到不同的 AJAX 调用完成之前的页面

我是从 this SO answer 那里得到的,在撰写本文时,该网站的浏览量已超过 70,000,所以我猜这个问题可能会经常发生。这显然让我看看是什么导致我的应用程序在其他地方导航,果然,在我的代码中:

$('[data-role=page]').on('pageshow', function (event, ui) {
if ($(location).attr('pathname').indexOf('login.html') == -1)
    if (window.localStorage['UserName'] == null || window.localStorage['Password'] == null) 
        window.location = "login.html";
}):

作为从应用程序开发的早期阶段开始的一种解决方法,作为检查用户是否实际登录的原始类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    • 2012-06-14
    相关资源
    最近更新 更多