Java servlet 会话 ID 在每次请求时都会更改
Java servlet session id changes on every request
我有一个 Web 应用程序,其中前端是通过 vue-cli 和 运行 在 localhost:8081 上开发的,后端是一个使用 tomcat 的独立项目并且是 运行 在 localhost:8080
后端有一个控制器 servlet,基于一个动作,控制器将工作委托给另一个 servlet。
当登录页面向控制器提交登录信息时,控制器创建 HttpSession,调用 LoginServlet 验证凭据,然后将响应发送给控制器,控制器将响应登录页面。到目前为止,如果我们检查 ControllerServlet 和 LoginServlet 上的 HttpSession,它们会完美匹配。
现在已经登录成功了 vue-router push 我们admin组件在url:localhost:8081/admin,此时我们有两个get请求,都是发给ControllerServlet的会将工作委托给另一个 servlet。如果我们检查控制器上的会话和第三个 servlet,它们是匹配的。但是,如果我们检查这 3 个请求的 HttpSession,它们彼此不同,servlet 会为每个请求创建一个新请求。我怎样才能使这个 HttpSession 持久化?是不是vue在8081上运行,后端在8080上的问题?
Until now if we check the HttpSession on the ControllerServlet and on
the LoginServlet they match perfectly.
当然,它们会匹配,因为 ControllerServlet
和 LoginServlet
的会话是由同一台服务器创建的(在端口 8080 上是 运行)。
服务器 运行 在端口 8080 创建的会话与服务器 运行 在端口 8081 没有关系,因此期望它们匹配是错误的。在极少数情况下,如果它们匹配,那可能只是巧合。
服务器 运行 在端口 8081 可以获取服务器 运行 在端口 8080 创建的会话的唯一方法是通过持久化和查询会话,即你将不得不将服务器 运行 在端口 8080 创建的会话持久化到 data-store (数据库、NFS 等),服务器 运行 在端口 8081 将不得不查询和明白了。
我有一个 Web 应用程序,其中前端是通过 vue-cli 和 运行 在 localhost:8081 上开发的,后端是一个使用 tomcat 的独立项目并且是 运行 在 localhost:8080
后端有一个控制器 servlet,基于一个动作,控制器将工作委托给另一个 servlet。 当登录页面向控制器提交登录信息时,控制器创建 HttpSession,调用 LoginServlet 验证凭据,然后将响应发送给控制器,控制器将响应登录页面。到目前为止,如果我们检查 ControllerServlet 和 LoginServlet 上的 HttpSession,它们会完美匹配。
现在已经登录成功了 vue-router push 我们admin组件在url:localhost:8081/admin,此时我们有两个get请求,都是发给ControllerServlet的会将工作委托给另一个 servlet。如果我们检查控制器上的会话和第三个 servlet,它们是匹配的。但是,如果我们检查这 3 个请求的 HttpSession,它们彼此不同,servlet 会为每个请求创建一个新请求。我怎样才能使这个 HttpSession 持久化?是不是vue在8081上运行,后端在8080上的问题?
Until now if we check the HttpSession on the ControllerServlet and on the LoginServlet they match perfectly.
当然,它们会匹配,因为 ControllerServlet
和 LoginServlet
的会话是由同一台服务器创建的(在端口 8080 上是 运行)。
服务器 运行 在端口 8080 创建的会话与服务器 运行 在端口 8081 没有关系,因此期望它们匹配是错误的。在极少数情况下,如果它们匹配,那可能只是巧合。
服务器 运行 在端口 8081 可以获取服务器 运行 在端口 8080 创建的会话的唯一方法是通过持久化和查询会话,即你将不得不将服务器 运行 在端口 8080 创建的会话持久化到 data-store (数据库、NFS 等),服务器 运行 在端口 8081 将不得不查询和明白了。