当前位置:  开发笔记 > 编程语言 > 正文

jQuery AJAX看到重定向为状态200而不是302?

如何解决《jQueryAJAX看到重定向为状态200而不是302?》经验,为你挑选了1个好方法。

我正在使用jQuery和jQuery.form插件来提交我的表单(也使用ASP.Net MVC).

问题是用户在网站的一部分中使用表单身份验证,如果他们的身份验证cookie在页面上的时间到期而不是返回状态302,这将是重定向到登录页面,我仍然得到200 ?

在FireBug中,我看到302 Found,然后我的登录页面接下来是200,这是发送回我的A​​jax调用的状态代码.如果我从未看到302发送回jQuery表单插件,如何检测到它们已被注销?



1> Kyle Rogers..:

我非常喜欢这个解决方案.通过将ajax请求的302响应更改为401,它允许您在客户端设置ajax以监视查找401的任何ajax请求,以及是否找到一个重定向到登录页面.非常简单有效.

Global.asax中:

protected void Application_EndRequest()
{
    if (Context.Response.StatusCode == 302 &&
        Context.Request.Headers["X-Requested-With"] == "XMLHttpRequest")
    {
        Context.Response.Clear();
        Context.Response.StatusCode = 401;
    }
}

客户端代码:

 $(function () {
      $.ajaxSetup({
        statusCode: {
          401: function () {
            location.href = '/Logon.aspx?ReturnUrl=' + location.pathname;
          }
        }
      });
    });

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有