对象是否序列化并发送给用户并在每个连接上返回(存储在 cookie 中)?
或者它们是否存储在服务器堆中并且 cookie 只是一个非常小的标识符?
有关此主题的任何信息都会有所帮助。
谢谢
对象是否序列化并发送给用户并在每个连接上返回(存储在 cookie 中)?
或者它们是否存储在服务器堆中并且 cookie 只是一个非常小的标识符?
有关此主题的任何信息都会有所帮助。
谢谢
你第二次猜到了。
cookie 包含一个 JSESSIONID。该 id 用于在服务器维护的映射中查找用户的 HttpSession。至少这是最常见的方式。服务器可以通过更复杂的方式实现这一点,但在 cookie 中来回穿梭整个状态并不是其中之一。
这有一些含义。首先,如果服务器出现故障,您将失去会话状态。其次,如果你有一个服务器集群,你需要让用户每次都连接到同一个服务器,否则他们将在后续请求之间失去会话。最后,如果有人找到一种方法来复制其他人的 JSESSIONID 并用它替换他们的,那么会话劫持成为可能。
cookie 只包含一个会话标识符(通常称为JSESSIONID
)。服务器将此标识符映射到当前存储在用户会话中的任何数据。
数据本身可能存储在内存中,也可能根据您使用的服务器及其配置被序列化到数据库或文件中。