JavaServlet会话id在每次请求时都会更改

JavaServlet会话id在每次请求时都会更改,java,vue.js,servlets,vue-cli,httpsession,Java,Vue.js,Servlets,Vue Cli,Httpsession,我有一个web应用程序,其中前端是通过vue cli开发的,运行在localhost:8081上,后端是使用tomcat的独立项目,运行在localhost:8080上 后端有一个控制器servlet,控制器根据动作将工作委托给另一个servlet。 当登录页面将登录信息提交给控制器时,控制器创建HttpSession,调用验证凭据的LoginServlet,然后将响应发送给将响应登录页面的控制器。到目前为止,如果我们在ControllerServlet和LoginServlet上检查HttpS

我有一个web应用程序,其中前端是通过vue cli开发的,运行在localhost:8081上,后端是使用tomcat的独立项目,运行在localhost:8080上

后端有一个控制器servlet,控制器根据动作将工作委托给另一个servlet。 当登录页面将登录信息提交给控制器时,控制器创建HttpSession,调用验证凭据的LoginServlet,然后将响应发送给将响应登录页面的控制器。到目前为止,如果我们在ControllerServlet和LoginServlet上检查HttpSession,它们完全匹配

现在登录成功了,vue router将url:localhost:8081/admin上的管理组件推给我们,此时我们有两个get请求,都是到ControllerServlet的,这将把工作委托给另一个servlet。如果我们检查控制器上的会话和第三个servlet,它们是匹配的。但是,如果我们从这3个请求中检查HttpSession,它们都会彼此不同,servlet会为它们中的每一个创建一个新的请求。如何使此HttpSession持久化?问题是否是因为vue在8081上运行,而后端在8080上

到目前为止,如果我们在ControllerServlet和上检查HttpSession 登录服务让它们完美匹配

当然,它们会匹配,因为
ControllerServlet
LoginServlet
的会话都是由同一台服务器创建的(在端口8080上运行)

由运行在端口8080的服务器创建的会话与运行在端口8081的服务器没有关系,因此期望它们匹配是错误的。在极为罕见的情况下,如果他们匹配,那可能只是巧合

在端口8081上运行的服务器获取在端口8080上运行的服务器创建的会话的唯一方法是通过持久化和查询会话,即,您必须将在端口8080上运行的服务器创建的会话持久化到数据存储(DB、NFS等),从中运行在端口8080上的服务器,8081必须查询并获取它

到目前为止,如果我们在ControllerServlet和上检查HttpSession 登录服务让它们完美匹配

当然,它们会匹配,因为
ControllerServlet
LoginServlet
的会话都是由同一台服务器创建的(在端口8080上运行)

由运行在端口8080的服务器创建的会话与运行在端口8081的服务器没有关系,因此期望它们匹配是错误的。在极为罕见的情况下,如果他们匹配,那可能只是巧合

在端口8081上运行的服务器获取在端口8080上运行的服务器创建的会话的唯一方法是通过持久化和查询会话,即,您必须将在端口8080上运行的服务器创建的会话持久化到数据存储(DB、NFS等),从中运行在端口8080上的服务器,8081必须查询并获取它