在同一服务器上运行的不同GWT应用程序会从同一浏览器相互干扰

时间:2014-02-17 16:04:47

标签: gwt browser rpc gwt-rpc gwt2

我在Jetty上有一个GWT应用程序。配置不同的访问端口等后,用户可以在同一台服务器上多次启动此应用程序(例如2次)。我们注意到,当从同一个浏览器访问这两个不同的实例时,它们会对每个实例进行干扰,例如,一个启动其他会话。

如果从不同的浏览器访问,例如,即firefox或chrome,则没有问题。

当然,如果两个应用程序从不同的服务器运行,则没有问题。

之前有没有人看到过相同的行为?如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

如果您的服务器使用cookie来维护会话,并且两个浏览器实例共享同一组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。