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

Javascript 如何防止用户在多个浏览器选项卡中打开应用程序?,javascript,java,servlets,zk,Javascript,Java,Servlets,Zk,我们正在寻找一种方法来防止用户在同一浏览器下的多个选项卡中打开应用程序 我们的想法是插入一个查询过滤器,然后访问会话,并在继续之前检查是否有已打开的选项卡 我查看了httpSession和HttpRequest内容,但没有发现任何有用的东西 java端是否有任何功能可以知道应用程序是否已在另一个选项卡中打开 谢谢,从服务器的角度来看,请求是否来自同一浏览器选项卡、不同选项卡、不同浏览器或不同设备并不重要。两个选项卡可以共享同一会话。服务器(或servlet)无法知道请求是来自选项卡A还是选项卡B

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

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

我查看了
httpSession
HttpRequest
内容,但没有发现任何有用的东西

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


谢谢,

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


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

使用Javascript可以实现这一点

查看过去的问题/答案

但是如果

  • 用户只需关闭Javascript即可
  • 他们从多个浏览器加载网站
  • 他们在同一个浏览器上以普通模式和匿名模式加载网站
  • 他们从多个设备(笔记本电脑和手机)加载网站
你会得到一个混合的功能,试图防止这一点(但这是一场失败的战斗,有无数的方法可以绕过它)

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

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

也有人试图使用websocket作为单一的交流点,但我不明白这是怎么回事,但你会在研究中遇到它