景安微信
网站有问题
老雷来帮忙
景安网络 欢迎来到景安网络虚拟主机资讯站!
免费主机国内主机
国内主机
0元购买
原价99元/年 我想领取
QQ群
快云体验交流群

群名称:快云体验群

群   号:288544772

一键加群 快云体验交流群
公众号
快云官方微信

扫码关注公众号您可以:

1、微信一键登录会员;

2、微信提交故障工单;

3、微信查询网站备案。

回顶部
虚拟主机

首页 > 域名资讯 > Tomcat实现多域名之间session共享

Tomcat实现多域名之间session共享

来源:未知

作者:hanlei

更新时间:2019-08-09 17:13

景安网络—专业的数据中心服务商!提供快云服务器,快云VPS,虚拟主机,域名注册,服务器托管,服务器租用,SSL证书,数据库存储。 2019快云上云特惠季 立即注册

最近启用二级域名后,面临一个主域名与二级域名之间 session 不能共享的问题,带来的麻烦就是用户在主域名登陆,但由于二级域名 session 不能共享 ,因此无法进行登陆的操作,对一些功能有一些影响。
 
问题的原因如下:
Tomcat 下,不同的二级域名,Session 默认是不共享的,因为 Cookie 名称为 JSESSIONID 的 Cookie 根域是默认是没设置的,访问不同的二级域名,其 Cookie 就重新生成,而 session 就是根据这个 Cookie 来生成的,所以在不同的二级域名下生成的 Session 也不一样。
找到了其原因,就可根据这个原因对 Tomcat 在生成 Session 时进行相应的修改。
 
快速解决方案1:
在项目的/MET-INF/ 目录下创建一个 context.xml 文件,内容为:
<?xml version="1.0" encoding="UTF-8"?> 
<Context useHttpOnly="true" sessionCookiePath="/"sessionCookieDomain=".XXXX.com" />
Done!
 
快速解决方案2:修改 Tomcat 的 server.xml 文件,内容为:
<Context path="" docBase="ROOT" reloadable="false"
 useHttpOnly="true"sessionCookiePath="/" sessionCookieDomain=".XXXX.com" />
Done!
 
以上两种方案的详细讲解见:http://tomcat.apache.org/tomcat-6.0-doc/config/context.html
 
快速解决方案3:生成一个叫做 crossSubdomainSessionValve.jar 的文件,用的时候放在 Tomcat lib 目录下,然后修改 Tomcat server.xml 文件:
<Valve className="me.seanchang.CrossSubdomainSessionValve" />
原理:取代由 Tomcat 域产生的会话 cookie ,允许该会话 cookie 跨子域共享。
 
代码:

将以上代码导出一个jar文件,放入 $CATALINA_HOME/lib 中,修改 $CATALINA_HOME/conf/server.xml 文件,加入:
<Valve className="me.seanchang.CrossSubdomainSessionValve" />
重启 Tomcat ,Done !
 

本文链接:http://host.zzidc.com/ymzx/1944.html

关键字:Cookiesession域名tomcat子域

若无特别注明,文章皆为景安网络原创,转载请注明出处。

上云HI购