【发布时间】:2021-03-03 07:58:30
【问题描述】:
我被要求对旧的 java 7/struts 1 Web 应用程序实施“每个帐户一个会话”限制。
在开发过程中,我遇到了一种我无法真正理解的行为。
因此,如果当前有一个帐户“Account-A”使用会话“Session-1234”登录,然后同一个帐户登录但使用不同的会话“Session-4567”然后会话“Session-1234”在该会话执行的下一个请求中被标记为无效。
在“Session-1234”失效的过程中,其中一个步骤是将客户端重定向(302)到登录页面。
现在是我不明白的。
如果请求以“同步”模式进入,一切都会按预期进行。
用户点击了某个链接
- 服务器 -> 使会话无效并重定向 (302) 登录。
- Browser -> 检测 302 查找 Location 标头并执行获取。
- 服务器 -> 为资源提供服务。
- 浏览器 -> 显示登录并更新 URL。
如果请求以“异步”模式(即 AJAX)进入,现在我遇到了问题,因为页面永远不会更改,登录的内容会显示在此处。
我的问题不是如何解决这个“问题”,而是要很好地理解它为什么会这样。
【问题讨论】: