当请求来自域名而不是本地主机时,我一直遇到会话变量不可用的问题。例如,如果我设置一个用户变量:
request.getSession(true).setAttribute("user", user);
//Redirects to another html page or something...
当客户端发出另一个请求并且我尝试访问用户会话变量时,它返回 null。
//Client makes another request to the server
request.getSession(true).getAttribute("user"); //returns null
我注意到在每个请求中,都会设置一个新的 JSESSIONID cookie,并且 ID 值会发生变化。这是否意味着每次客户端访问服务器时都会创建一个新会话?如何在客户端之间维护相同的会话,以便我可以将对象存储在 HttpSession 中并可以访问它们?
我不知道这是否与任何事情有关,但是当从 tomcat 管理器查看应用程序时,会话数继续增长,不管我从同一个浏览器窗口使用应用程序,而不是刷新页或任何东西。对服务器的每个请求都在创建新会话的另一个迹象?
这仅在从域名访问应用程序时发生,例如:example.com/app。当来自本地主机时,会话变量工作正常。
更新
我在没有使用 response.sendRedirect 的情况下进行了测试,并且会话变量可用,直到我切换页面并向服务器发出另一个请求。这证实了我的怀疑,即每个请求都会创建一个新会话。它不是杀死会话的重定向,而是任何新请求。我该如何防止这种情况?