jQuery的AJAX看到重定向为状态200不302?
我使用jQuery和jQuery.form插件来提交我的表单(也使用ASP.Net MVC)。
问题是用户在使用表单身份验证的站点部分中,并且如果他们的auth cookie在他们在页面上的时间到期而不是取回302的状态(这将重定向到登录页面),我仍然获得200 ?
在FireBug中,我看到302 Found,然后我的登录页面作为200发送给我的Ajax调用。 如果我从未将302发送回jQuery表单插件,我如何检测到它们已被注销?
我非常喜欢这个解决方案。 通过将ajax请求上的302响应更改为401,它允许您在客户端设置您的ajax,以监控寻找401的任何ajax请求,以及是否找到一个重定向到登录页面的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;
}
}
});
});
尝试使用缓存:jquery ajax中的false缓存选项:
$.ajax({
url: "test.html",
cache: false,
success: function(html){
$("#results").append(html);
}
});
---编辑用C#代码尝试一下:
protected void Page_Load(object sender, System.EventArgs e)
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
...
}
之前遇到类似的问题。 这个问题给出的解决方案有帮助吗?
链接地址: http://www.djcxy.com/p/71881.html