Java Apache Tomcat中在两个域之间共享会话cookie的变通方法

Java Apache Tomcat中在两个域之间共享会话cookie的变通方法,java,session,tomcat,cookies,Java,Session,Tomcat,Cookies,我在一个名为www.example.com.br的域下有一个网站。并且我的服务器设置为使用cookie会话跟踪模式 getServletContext().getSessionCookieConfig().setDomain(".example.com.br"); getServletContext().getSessionCookieConfig().setPath("/"); 但现在我在www.example.com下介绍了该网站的英文版,因为对于谷歌和搜索引擎优化技术来说,最好有不同的域

我在一个名为
www.example.com.br
的域下有一个网站。并且我的服务器设置为使用cookie会话跟踪模式

getServletContext().getSessionCookieConfig().setDomain(".example.com.br");
getServletContext().getSessionCookieConfig().setPath("/");
但现在我在www.example.com下介绍了该网站的英文版,因为对于谷歌和搜索引擎优化技术来说,最好有不同的域名,而不是子域

我在Stack Overflow中发现了很多关于这方面的问题,我知道出于很多安全原因,这是不可能的

但是,如果URL有
.com.br
.example.com
的话,难道没有告诉Tomcat使用cookie域
.example.com.br
吗?我不需要共享会话信息。。。ie:如果用户更改域,可能需要重新登录。我不担心。问题是根本没有存储关于
.com
版本的信息,因为cookie被设置为
.com.br
版本


没有解决方法吗?

由用户的浏览器决定是否随请求发送cookie。Web服务器(在您的例子中是Tomcat)在该决定中没有任何发言权。你的要求被明确禁止。例如,他说:

用户代理应尽一切努力阻止共享 位于不同域中的主机之间的会话信息


我能提出的最佳建议是,让您的会话管理(登录、注销等)在单个域中运行,而不管用户最初访问的域是什么。

Hi Marko,提前谢谢。关于如何在单个域上进行会话管理,您有什么阅读资料可以向我推荐吗?这实际上取决于您使用的应用程序类型和框架。也许您可以将应用程序的结构设置为所有经过身份验证的请求都进入example.com域。若用户转到example.com.br,您可以将请求重定向到example.com并设置参数,指定应使用巴西语言环境。正如我所说,细节在很大程度上取决于您的用例,因此,很难给出任何有用的建议。顺便说一句,可能有一些问题的答案可以帮助您或给您一些新的想法。谢谢大家,但解决方案是,在使用example.com这样的新域之前,我必须创建一个子域,如english.example.com.br,所有到example.com的请求都重定向到该子域。我主要关心的是SEO策略,所以,在会话中使用区域设置更改不是我们的选择。