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