如何在没有cookie的情况下将2个后续请求发送到同一个JBoss节点?

时间:2014-06-06 22:58:05

标签: tomcat cookies jboss load-balancing jsessionid

如何将没有cookie的2个后续请求从同一个客户端发送到同一个JBoss节点?

我有一个多节点设置,ApacheJBoss7load balancingsticky sessionSSO)和Tomcat。这是场景:

  1. 用户在浏览器中输入 https:/// myapp
  2. 负载均衡器将其发送到 myapp.ear 文件上的 node1
  3. 由于尚未进行身份验证, myapp 会加载未受保护的client_redirect.jsp资源,该资源会创建JSESSIONID并返回给客户端。 HTTP响应具有header Set-Cookie:JSESSIONID=1234_.node1; Path=/myapp
  4. 浏览器上加载*下面的“空”页面; onload事件处理程序将URL更改为 https:/// home /?app = myapp ,并发送另一个请求。但是,IT DOES NOT CONTAIN THE JSESSIONID cookie
  5. 服务器接收第二个请求,并且由于循环策略,将其发送到 main.ear 文件
  6. 上的 node2
  7. main 加载未受保护的login.jsp资源,该资源会创建另一个JSESSIONID并返回给客户端。 HTTP响应将SET-COOKIE标头设置为Set-Cookie:JSESSIONID=5678_.node2; Path=/
  8. 已加载登录页面,但现在我们在浏览器上有2个JSESSIONID COOKIES,指向不同的节点,这会在登录后导致SSO问题,当我们重定向到{{ 1}}再次
  9. *“清空”client_redirect页面:

    https://<ip>/myapp

1 个答案:

答案 0 :(得分:0)

以下是朋友建议的解决方案:

我们不需要2个JSESSIONID个Cookie,所以我们不应该在第一个位置创建它们。 myapp 应设置web.xml文件,如下所示,因此主要 myapp 可以共享同一会话。

<session-config>
    <cookie-config>
        <path>/</path>
    </cookie-config>
</session-config>

相关链接: