gpt4 book ai didi

jsp - 在选项卡之间共享的 session

转载 作者:行者123 更新时间:2023-12-03 21:30:11 24 4
gpt4 key购买 nike

我有 JAVA Web 应用程序,我需要停止在浏览器选项卡之间共享 session ,这意味着

用户打开浏览器,登录他的帐户并在同一浏览器的新选项卡中打开特定页面。根据默认设置, session 将共享到新选项卡,并且用户会自动登录到新选项卡。任何人都可以告诉如何停止这种情况,所以我至少可以在几个敏感页面中限制它,如果不是整个应用程序。

最佳答案

通常 cookie 用于 session 处理。然后所有选项卡和浏览器窗口共享同一个 session 。但是您可以将 servlet 容器配置为使用 URL 重写而不是 cookie。 (这是一个 example for Jetty 。)

使用 URL 重写, session 只能通过包含 session ID 的 URL 参数来标识。因此,必须使用方法 HttpServletResponse.encodeURL() 使用此参数增强 Web 应用程序的每个内部 URL。 .如果您正在使用像 Wicket 这样的 Web 框架,那么这很可能已经为您完成了。

通过 URL 重写,可以在同一浏览器实例的不同窗口或选项卡中拥有多个独立 session 。

更新:
为了回应downvote,我想明确URL重写的不同行为:

假设网站的 URL 是 http://webapp.com .

cookies :
开通 http://webapp.com在第一个浏览器选项卡中。

服务器创建一个 session 并在响应中发送一个 cookie。

浏览器存储 cookie。

然后打开http://webapp.com在第二个浏览器选项卡中。浏览器将此 URL 与最近存储的 cookie 相关联,并将 cookie 添加到请求中。

对于服务器,来自第一个或第二个浏览器选项卡的请求和来自同一 session 的响应之间没有区别。有时这是期望的行为。

URL重写:
开通 http://webapp.com在第一个浏览器选项卡中。

服务器创建一个 ID 为 1 的 session ,并将参数 jsessionid=1 添加到响应页面中的每个 URL。没有 cookie 被传输。

从第一个浏览器选项卡对同一 web 应用程序的另一个页面的所有进一步请求都包含 session ID(例如 1)。

然后打开http://webapp.com从第二个浏览器选项卡。 区别就在这里! 由于请求中没有 cookie 和 jsessionid 参数,服务器创建一个新 session (即 ID 2)并将参数 jsessionid=2 添加到响应页面中包含的每个 URL。从现在开始,来自第二个浏览器选项卡的所有后续请求都与 session 2 相关联。

所以你在同一个浏览器中有两个独立的 session 。

关于jsp - 在选项卡之间共享的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6243201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com