首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于每个新客户端,tomcat不是创建新会话id,而是使用getSession()方法提供其他客户端使用的旧会话id

对于每个新客户端,tomcat不是创建新会话id,而是使用getSession()方法提供其他客户端使用的旧会话id
EN

Stack Overflow用户
提问于 2015-05-18 13:23:48
回答 1查看 415关注 0票数 0

每当客户端打开新的web浏览器时,tomcat容器将客户机视为新客户机,和返回客户端的新会话id。

如果客户端打开5个web浏览器,容器就会创建5个唯一的会话id,但在我的示例中,getSession(true)方法会返回每个新客户端的旧会话id。

例如,如果我为客户端调用getSession()方法,然后容器为客户端生成B0B7945E63D00701E19FA6E9A4909B07会话id,当第二个客户端出现时,我再次调用getSession()方法,但这次getSession()方法返回为客户端方法生成的旧会话id。

因此,我在客户机1的会话id中设置的数据也会反映到客户端2,如果有5个或更多的客户端来,那么getSession()将返回为客户端1生成的旧会话id给所有客户机。

EN

回答 1

Stack Overflow用户

发布于 2015-05-18 14:56:36

默认配置是在服务器和浏览器之间的cookie中交换会话id。因为HTTP本质上是一个非连接协议,而会话只是模拟连接的丑陋(*)攻击。

如果单个客户机(机器)打开5个浏览器应用程序或同一浏览器的windows ,则所有客户端(机器)都将共享相同的cookie包。也将分享同一个会议!有人告诉我,最近的一些浏览器实际上试图解决这个问题,但我从未进行过测试。

当我必须从一台机器测试不同的会话时,我使用firefox、IE和Chrome来拥有不同的cookie包。

(*)丑陋只是我的观点,但事实是,服务器无法可靠地知道客户机是否关闭了浏览器,您必须使用复杂的模式来避免会话劫持(只要您要求,ok安全框架可以为您做到这一点)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30304416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档