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

MTi*_*ted 5 java session tomcat servlets

我使用tomcat 7.0.6与jdk 1.6.0_22

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

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

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

Bal*_*usC 14

设置有问题的webapp元素的sessionCookieDomain属性(注意前导点,这非常重要).这将允许webbrowser在所有子域之间共享cookie.<Context>.mydomain.com

如果您实际上有多个webapp上下文并且您想要在它们之间共享会话,那么您还需要设置相关webapps sessionCookiePath<Context>元素属性/.

简而言之:

<Context sessionCookieDomain=".mydomain.com" sessionCookiePath="/">
Run Code Online (Sandbox Code Playgroud)

也可以看看:


对于Tomcat 6用户:请注意,这是在Tomcat 6.0.27中引入的.对于那些无法升级的人,您需要Valve修改cookie域,最后结合元素中的emptySessionPath属性,以便您拥有多个您想要共享会话的webapp上下文.<Connector>/conf/server.xml