在 Apache Tomcat 中的两个域之间共享会话 cookie 的解决方法
Workaround to share session cookie between two domains in Apache Tomcat
我在名为 www.example.com.br
的域下有一个网站。我的服务器设置为使用 cookie 会话跟踪模式。
getServletContext().getSessionCookieConfig().setDomain(".example.com.br");
getServletContext().getSessionCookieConfig().setPath("/");
但现在我要在 www.example.com 下介绍英文版的网站,因为 Google 和 SEO 技术最好有不同的域而不是子域。
我在 Stack Overflow 中发现了很多关于此的问题,我知道出于很多安全原因这是不可能的。
但是如果 URL 有 .com.br
和 .example.com
如果URL 有 .com
?我不需要共享会话信息...即:如果用户更改域,他可能需要重新登录。我不担心。问题是根本没有存储 .com
版本的信息,因为 cookie 设置为 .com.br
版本。
没有任何解决方法吗?
用户的浏览器决定是否随请求发送 cookie。 Web 服务器(Tomcat,在您的情况下)对该决定没有任何发言权。你要求的是明确禁止的。例如,RFC2109 表示:
A user agent should make every attempt to prevent the sharing of
session information between hosts that are in different domains.
我能提出的最佳建议是让您的会话管理(登录、注销等)在单个域中工作,而不管用户最初访问的是哪个域。
我在名为 www.example.com.br
的域下有一个网站。我的服务器设置为使用 cookie 会话跟踪模式。
getServletContext().getSessionCookieConfig().setDomain(".example.com.br");
getServletContext().getSessionCookieConfig().setPath("/");
但现在我要在 www.example.com 下介绍英文版的网站,因为 Google 和 SEO 技术最好有不同的域而不是子域。
我在 Stack Overflow 中发现了很多关于此的问题,我知道出于很多安全原因这是不可能的。
但是如果 URL 有 .com.br
和 .example.com
如果URL 有 .com
?我不需要共享会话信息...即:如果用户更改域,他可能需要重新登录。我不担心。问题是根本没有存储 .com
版本的信息,因为 cookie 设置为 .com.br
版本。
没有任何解决方法吗?
用户的浏览器决定是否随请求发送 cookie。 Web 服务器(Tomcat,在您的情况下)对该决定没有任何发言权。你要求的是明确禁止的。例如,RFC2109 表示:
A user agent should make every attempt to prevent the sharing of session information between hosts that are in different domains.
我能提出的最佳建议是让您的会话管理(登录、注销等)在单个域中工作,而不管用户最初访问的是哪个域。