2009-07-13 142 views
0

我在网站上工作,用户得到一个30分钟的cookie,并在其到期后,任何对服务器的调用重定向到“会话过期,请点击这里重新登录屏幕。”以下是折痕:jQuery AJAX蹦床重定向

当用户进入会话过期页面时,该页面的URL是他们尝试访问的页面的URL。点击“重新登录”链接会将用户带到一个通用登录页面,该页面使用推介URL(他们尝试访问的URL),将其返回到他们最初试图去的地方,而不是通用“欢迎“屏幕。

所以,如果我对服务器进行AJAX调用,并告诉它填充响应的一些div,我会得到一个div中的“会话过期”页面。

但是,我只有一次“会话过期”页面。因此,例如,如果我有两个窗口打开到同一个网站,并且我点击了一个链接,我会得到会话过期错误。如果我切换窗口并点击其他链接,我会得到通用登录页面。所以我只能看到“会话过期”页面。现在

,我看了看这个问题:

How to manage a redirect request after a jQuery Ajax call

,并能够做出真正显著的进步,在我的理解,至少,但是从我所知道的,该解决方案已基本jQuery的诱捕响应并将页面引用到通用登录页面。

我不确定这是否与我想要的一样。首先,不清楚登录页面是否会始终将我的页面(ajax页面)视为引荐。还有另一个问题,也许也不重要,但可以。

由于此蹦床重定向(我希望这是正确的用语),POST数据在重新登录后往往会打破反弹。它得到一个有关URL长度错误的服务器错误。

现在,我已经设置好了,如果服务器响应不是200,它会输出xmlHttp响应,在第一次触发时会得到一个“您正在重定向,是吗?来自浏览器的警报。在第二次触发时,我使用完整的HTML代码获取登录页面。 (这实际上取决于浏览器,Chrome只是吹捧)。

所以,我想要的东西,如果是可以做到的,就是三两件事:

  1. 如果响应不是200,整个页面应该返回XMLHTTP响应进行更换(如重定向,而不是一个地址,页面服务器试图重定向到),并

  2. 重定向/重绘页面不应该有任何职位的数据,所以我想:

  3. 这应该全部作为一个全局函数来完成在真正的查询发生之前。

所以我越来越失去了对细微之处是:

如何将整个页面重定向正确的(你要记住,我不能触发页面,一旦我得到重定向响应,因为那样我就不会得到“会话过期”页面。)

如果我可以设置一个函数(AJAX事件,我相信),这将使测试要求所有的我的AJAX功能,而无需参考文本呼叫功能从每个AJAX功能。我在jQuery网站上的Ajax Events文档中迷失了方向,因为它好像有些时候听起来像是自动的(就像无论我怎样调用它,它都会运行),而其他时候它看起来像是一种使这种浮油的方法函数做它应该做的事情,但只记得那些记得问它的ajax函数。

最后一点,我感谢大家这一步谁已经阅读:

这是很可能的是,会话过期窗口不给用户又回到了他们从前期重认证附带的页面至关重要。其中一个目标是尽可能保持用户体验的完整性。虽然这个网站的普通用户可能甚至不喜欢崩溃屏幕,但他们确实预测到了这一点,而从私人网站转到普通的“用户名/密码”页面将会分散注意力,甚至会对某些用户产生影响。

回答

0

一个解决方案只是发生在我身上,但我仍然需要以消除该缺陷:

由于会话开始被存储在cookie中,我能有一个功能,之前的任何Ajax请求,检查看看cookie是否设置为过期。如果是这样,我可以重新加载他们所在的页面,使用相同的URL,并且会打到会话过期的页面。

+0

另一方面,我仍然想知道是否确实有办法在服务器返回时将整个页面推向重定向,而不必使用重定向URL(不是一个选项。) – Anthony 2009-07-14 03:07:59