gpt4 book ai didi

jQuery AJAX 将重定向视为状态 200 而不是 302?

转载 作者:行者123 更新时间:2023-12-03 22:21:56 25 4
gpt4 key购买 nike

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

问题是用户位于使用表单例份验证的网站部分,如果他们的身份验证 cookie 在页面上的时间内过期,而不是返回 302 状态(这将重定向到登录页面),我还能得到200吗?

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

最佳答案

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

全局.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;
}
}
});
});

关于jQuery AJAX 将重定向视为状态 200 而不是 302?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1268165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com