我们在使用负载均衡器和粘性会话部署在 JBOSS 集群环境中的 Struts 应用程序中面临一个问题
问题描述
1) 此问题发生在具有 2 个页面(register1.do 和 register2.do 页面)的用户注册功能中
2)当用户点击注册网址时,https://ourwebsite.com/register1.do
发出了两个 GET 请求
GET register1.do(获取第一个注册页面并在会话中设置一些值)
GET captcha.do(这会加载要在 register1.do 上显示的验证码图像)
3) 有时会发生对 register1.do 的 GET 请求设置一个 JSESSIONID cookie,而对 captcha.do 的 GET 请求覆盖由第一个请求设置的 JSESSIONID cookie。这会导致第二个注册页面出现问题,因为它会获取存储在会话中的一些值,并且由于会话被验证码覆盖,因此无法获取任何值。见下图
4)这种情况并非每次都发生,一旦发生此问题,如果我们回到 register1.do 页面刷新(F5)/硬刷新(Ctrl + F5),那么对验证码的 GET 请求不会覆盖 JSESSIONID cookie并且用户注册工作正常。
此外,这只发生在集群环境中,在单个 JBOSS 环境中它可以正常工作。
谁能帮我确定这里可能出现的问题?
为什么我们进行页面刷新时会话不会被覆盖?