我在Jetty上有一个GWT应用程序。配置不同的访问端口等后,用户可以在同一台服务器上多次启动此应用程序(例如2次)。我们注意到,当从同一个浏览器访问这两个不同的实例时,它们会对每个实例进行干扰,例如,一个启动其他会话。
如果从不同的浏览器访问,例如,即firefox或chrome,则没有问题。
当然,如果两个应用程序从不同的服务器运行,则没有问题。
之前有没有人看到过相同的行为?如何解决这个问题?
答案 0 :(得分:1)
如果您的服务器使用cookie来维护会话,并且两个浏览器实例共享同一组cookie,那么当第二个登录时,它必须启动第一个 - 同一个cookie如何具有多个值?
尝试的选项:
答案 1 :(得分:0)
JSESSIONID用于防止跨站点请求伪造攻击。检查您如何设置此cookie。通常,您可以这样设置:
<script type="text/javascript">
var info = "<%=XsrfTokenUtil.getToken(request.getSession().getId()) %>";
</script>
如果你这样做,你应该为每个浏览器窗口获得相同的标记(值),只要你有一个会话。尝试找出每次都设置新值的原因。
此外,如果您需要具有多个窗口的功能,则可以在XsrfTokenUtil中允许重复的Cookie:
final Cookie sessionCookie = getCookie(cookies, "JSESSIONID", false);
将false替换为true以允许重复的Cookie。