重定向到实际页面以响应ajax请求

时间:2011-08-24 14:28:08

标签: ajax redirect xmlhttprequest web-applications

我们有一个有状态的应用。当用户处于非活动状态一段时间后,会话超时,并且会破坏缓存的数据/对象。

我们有一个请求过滤器,用于在处理请求之前检查会话。如果会话为null,则返回重定向到登录页面。这适用于正常的非XHR请求。

但是我们应该如何处理XHR请求呢?据我所知,发布重定向到XHR请求只是意味着返回登录页面html以响应XHR请求,这显然不是所希望的行为!

我们如何在此实例中发出实际的页面重定向?如果不可能,有什么替代方案?我想很多应用必须要解决这个问题。

编辑:我还应该提一下,由于使用了处理我们很多ajax内容的app框架,我们无法轻易地将检查添加到ajax响应中。

1 个答案:

答案 0 :(得分:1)

首先,您可能需要区分实际的浏览器和Ajax请求。 Some frameworks已经添加了自定义标题,如果您没有,那么您还可以添加一个“X-Requested-With”标题以便能够分辨。

然后,将浏览器请求直接重定向到登录页面。对于Ajax请求,您应该发出401 Unauthorized

虽然你说一个框架处理你的大部分Ajax代码,它仍然应该为你提供一个机会来处理错误状态代码(否则我会考虑转移到另一个框架:)。

在此回调例程中,您可以使用window.location=...在Javascript /客户端发出重定向。