一尘不染

在2个子域之间共享会话数据

tomcat

我正在将tomcat 7.0.6与jdk 1.6.0_22一起使用

是否可以在具有公共子域(例如a.mydomain.com和b.mydomain.com)的两个不同域之间共享会话数据?

使用默认的Java servlet
a.mydomain.com和b.mydomain.com获得不同的会话,但是无法为mydomain.com中的所有子域创建共享会话吗?

问题还在于,我不直接控制commen子域(mydomain.com),所以我不能从mydomain.com提供任何servlet。


阅读 231

收藏
2020-06-16

共1个答案

一尘不染

将有问题的Web应用程序sessionCookieDomain<Context>元素的属性设置为.mydomain.com(注意前导点,这非常重要)。这将允许网络浏览器在所有子域之间共享cookie。

如果您实际上有多个webapp上下文,并且还希望在它们之间共享会话,则还需要将相关Webapp元素的sessionCookiePath属性设置<Context>/

简而言之:

<Context sessionCookieDomain=".mydomain.com" sessionCookiePath="/">

也可以看看:


对于Tomcat 6用户:请注意,这是Tomcat
6.0.27中引入的。对于那些无法升级的用户,您需要Valve修改cookie域,最终要与element中的emptySessionPathattribute
结合使用,以防您要共享会话的多个webapp上下文。<Connector>``/conf/server.xml

2020-06-16