首页 > 其他分享 >同一个ip,不同端口号,session失效

同一个ip,不同端口号,session失效

时间:2023-06-28 14:33:12浏览次数:50  
标签:8080 ip 路径 7777 sessionid session cookie http 端口号


背景

我有两个工程projectA、projectB,projectA放在TomcatA中,projectB放在TomcatB中,TomcatA、TomcatB在一台server上。
工程都映射的根路径,不用project名字就可以访问,如下

http://ip1:7777/
http://ip1:8080/

问题

先在7777登录,然后再在8080登录,发现会把7777端口的用户踢下来;再在7777登录,发现会把8080踢下来,一直交替踢……

推测

因为session状态是靠cookie中存储的jsessionid实现的,所以,第一直觉就是jessionid被覆盖了!然后,我做了如下的测试;

8080端口刷新

由于是第一次请求,所以,服务器端返回cookie

名称是JSESSIONID,域名是localhost,路径是/

同一个ip,不同端口号,session失效_tomcat


同一个ip,不同端口号,session失效_xml_02

7777端口刷新

请求7777时,居然会带着8080端口的cookie发送,8080的sessionid在7777 tomcat中肯定找不到,所以返回了新的sessionid(名称是JSESSIONID,域名是localhost,路径是/),然后就把8080产生的sessionid覆盖了。

同一个ip,不同端口号,session失效_80端口_03


同一个ip,不同端口号,session失效_80端口_04

我们找到问题原因了,由于两个工程的sessionid,名称、域、路径都一样,导致sessionid被覆盖,从而导致session失效;由此也得出cookie是不区分端口的。

解决

基于cookie区分路径、域名、名称,有三个解决方案。

设置域名不同,比如
http://projectA.com:7777/
http://projectB.com:8080/

设置路径不同,设置工程名字,不再映射根路径,比如
http://ip1:7777/projectA
http://ip1:8080/projectB

设置key不同
在Tomcat的server.xml中配置sessionCookieName,只要两个不相同就可以
Tomcat server.xml context配置

相比较而言,首推域名不同、而后路径不同、而后key不同,域名不同最可靠

结论

  • cookie不区分端口号
  • cookie区分域、路径、名称

更多cookie的特性,请参考cookie入门教程;


标签:8080,ip,路径,7777,sessionid,session,cookie,http,端口号
From: https://blog.51cto.com/u_15561616/6571886

相关文章

  • Tomcat7 session 持久化
    tomcat7session默认是持久化的,tomcat7关闭或者重启,都会将内容持久化到SESSION.ser文件,这里推荐使用everything这个软件,查找这个文件。参考官方文档: 戳我......
  • python zipfile 打包压缩 层级过多的解决措施
    zipfile使用详细https://www.cnblogs.com/yyds/p/6427349.html解决方案https://blog.csdn.net/csrh131/article/details/107895772操作案例和总结https://blog.51cto.com/u_16055028/6475844https://mp.weixin.qq.com/s/2RDCnQLORmn8kMHJsOhenA......
  • 学习AdapterViewFlipper 图片、文字 轮播动画控件
    1\.问题/坑点1.1item宽高不生效问题需要注意的是,AdapterViewFlipper在布局时,宽高一定要用match_parent或者具体dp值。如果宽、高中使用了wrap_content时,会导致AdapterViewFlipper容器的宽高,最终变成第一个item的宽高。即使后续item的宽高超过第一个item,也不会生效,内容显......
  • 挖掘“张琦们”短视频IP管理运营的隐秘知识
    提及火爆抖音的IP“商业顾问张琦老师”,相信大家并不陌生,作为抖音管理经营类视频代表性IP,张琦创造了现象级互联网营销的典例。随着互联网+快速发展以及产业经济结构转型对为从业者职业技能和素养提出更高的要求,社会开始提倡“终身学*”。*日,巨量引擎旗下内容消费趋势洞察品牌巨......
  • Excel JavaScript object model in Office Add-ins
    ExcelJavaScriptobjectmodelinOfficeAdd-ins-OfficeAdd-ins|MicrosoftLearnOffice.jsAPIforExcelExcel加载项使用 OfficeJavaScriptAPI 与Excel中的对象进行交互,其中包括两个JavaScript对象模型:ExcelJavaScriptAPI:随Office2016一起引入的Exc......
  • Linux 使用yum安装telnet-server、telnet、xinetd以及telnet本机ip
    一、查看telnet-server、telnet是否安装rpm-qatelnet-serverrpm-qatelnet没有输出telnet的版本,什么都没有输出,表示未安装二、安装telnet服务yumlist|greptelnetyuminstall-ytelnet-server.x86_64yuminstall-ytelnet.x86_64三、检查xinetd是否开启servi......
  • typescript中 == 和 === 的区别
    在TypeScript中,==和===是用于比较两个值是否相等的操作符。 ==是相等比较操作符,它在比较值时进行隐式类型转换。它会尝试将两个操作数转换为相同类型,然后再进行比较。这种隐式类型转换可能会导致一些意想不到的结果。例如:console.log(1=="1");//trueconsole.log(t......
  • JavaScript 中模块的导入和导出
    模块简介html文档一般在标签中引入外部js文件<script>标签引入的脚本中创建的变量,都会被注册为window对象下全局变量,这样做会污染全局命名空间这就衍生除了模块化的解决方案,比如CommonJS等,但是这些解决方案都不是JavaScript原生的,直到ES6支持JavaScript模块的使用。......
  • TypeScript又出新关键字了?
    TypeScript5.2将引入一个新的关键字:using。当它离开作用域时,你可以用Symbol.dispose函数来处置任何东西。{constgetResource=()=>{return{[Symbol.dispose]:()=>{console.log('Hooray!')}}}usingresource=getResource();......
  • eclipse中使用maven插件的有关问题:Updating index central|http://repo1.maven.org/m
    eclipse中使用maven插件的问题:Updatingindexcentral|http://repo1.maven.org/maven2问题产生如下:因为单位使用了过滤,访问Internet时,超过10M的内容就拒绝。因为maven插件在初始时,需要下载Maven的index文件,这个文件比较大,有38M多,下载不成功。所以造成使用Maven添加依赖项时(AddDep......