应用程序服务器如何跟踪哪个客户端与哪个HttpSession对象关联?它是否与跟踪客户端之间的TCP/IP连接有关?或者饼干?我怀疑这是cookie,因为有一种单独的提取cookie的方法。
背景
我知道servlet和JSP可以调用request.getSession()来获得与客户端关联的HttpSession对象。我很好奇,当客户端请求新页面时,服务器是如何知道返回相同的对象的。我四处搜索,找到的所有文档都是关于如何提取会话信息的。我感兴趣的是服务器如何将会话信息从它可以访问的大量客户端数据中隔离出来
我怀疑是饼干
是的!在无状态HTTP协议和servlet中,基本上有两种跟踪用户会话的方法:JSESSIONID
cookie或URL重写。后者在cookie不可用时使用。
对于第一个响应,servlet容器在客户端中设置以下cookie:
Set-Cookie: JSESSIONID=25E7A6C27095CA1F560BCB2983BED17C; Path=/; HttpOnly
每个后续请求都包含这个cookie,servlet容器使用它来提供正确的HttpSession
。您可以使用servletneneneba API直接访问这个cookie,甚至可以在JSESSIONID
或其他cookie上构建自己的会话机制。但是servlet容器为您做到了这一点。
另请参阅
- 为什么启用cookie时jsessionid会出现在Wicket URL中?-有关servlet容器如何区分cookie和URL重写的一些技术细节