如何防止用户在多个浏览器选项卡中打开应用程序?

Posted

技术标签:

【中文标题】如何防止用户在多个浏览器选项卡中打开应用程序?【英文标题】:How to prevent user from opening the application in multiple browser tabs? 【发布时间】:2021-07-28 05:42:25 【问题描述】:

我们正在寻找一种方法来防止用户在同一浏览器下的多个选项卡中打开应用程序。

想法是插入其中一个查询过滤器,然后可能会访问会话,并在继续之前检查是否有已打开的选项卡。

我查看了 httpSessionHttpRequest 的资料,但没有发现任何帮助。

java 端是否有任何功能可以知道该应用是否已在另一个选项卡中打开?

谢谢,

【问题讨论】:

【参考方案1】:

有一些方法可以用 javascript 来完成。

查看过去的问题/答案

How to prevent same website open multiple tab pages? Stop people having my website loaded on multiple tabs Preventing user from opening multiple tabs for the application

但如果...

,所有这些 javascript 技术都无法工作 您的用户只需关闭 Javascript。 他们从多个浏览器加载网站。 他们在同一浏览器上以正常模式和隐身模式加载网站。 他们从多种设备(笔记本电脑和手机)加载网站。

您最终会使用多种功能来尝试防止这种情况发生(但这是一场失败的战斗,并且有无数种方法可以绕过它)。

如果您有登录名,您需要跟踪过去的登录名,并在新登录名时断开/使其他登录名无效。 (这将有助于多个浏览器和设备的尝试)。如果尝试使用旧会话,则服务器端的授权层将使旧会话无效。

如果您在同一个浏览器中有多个选项卡,则旧问题/答案中的 javascript 技术可能是最好的。

也有人尝试使用 websocket 作为单点通信,但我不明白它是如何工作的,但你会在研究中遇到它。

【讨论】:

【参考方案2】:

从服务器的角度来看,请求来自相同的浏览器选项卡、不同的选项卡、不同的浏览器或不同的设备都没有关系。两个选项卡可以共享同一个会话。服务器(或 servlet)无法知道请求是来自选项卡 A 还是选项卡 B。选项卡是浏览器功能,它不会在 HTTP 标头中发送。

如果您能详细说明为什么要这样做,我可能会给出更好的答案。

【讨论】:

以上是关于如何防止用户在多个浏览器选项卡中打开应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

js跳转页面在新选项卡中打开

jQuery:检测鼠标单击并在新选项卡中打开目标

Vue.js:如何在已打开的选项卡中打开外部链接?

单击 HTML 按钮时在新浏览器选项卡中打开 URL

如何在浏览器多个选项卡中处理用户注销?

如何操作页面多个窗口?