【问题标题】:Redirecting to an actual page in response to an ajax request重定向到实际页面以响应 ajax 请求
【发布时间】:2011-08-24 14:28:08
【问题描述】:

我们有一个有状态的应用程序。当用户一段时间不活动时,会话超时,缓存的数据/对象被销毁。

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

但是我们应该如何处理 XHR 请求呢?据我了解,向 XHR 请求发出重定向仅意味着返回登录页面 html 以响应 XHR 请求,这显然不是所需的行为!

在这种情况下,我们如何发出实际的页面重定向?如果这是不可能的,有什么替代方案?我想很多应用程序都必须处理这个问题。

编辑:我还应该提到,由于使用了一个处理我们很多 ajax 内容的应用程序框架,我们无法轻松地向 ajax 响应添加检查。

【问题讨论】:

  • 您是否考虑过返回401 响应?

标签: ajax redirect xmlhttprequest web-applications


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    相关资源
    最近更新 更多