不同二级域名session共享的两种方式
背景:
www.mydomain.com 和 test.mydomain.com的三级域名是不同的。默认情况下在相同浏览器、不同tab页访问分别访问这两个域名的session不共享的。因为cookie的domain是不一样的,所以浏览器不能携带同一目录的sessionId给服务器。登录一个域名,切换到第二个域名时,需要重新登录。
使用一个过渡域名,将sessionID更新成一致
如下:
String JSESSIONID = request.getSession().getId();//获取当前JSESSIONID (不管是从主域还是二级域访问产生)
Cookie cookie = new Cookie("JSESSIONID", JSESSIONID);
cookie.setDomain(".test.com"); //关键在这里,将cookie设成主域名,确保不同域之间都能获取到该cookie的值,从而确保session统一
response.addCookie(cookie); //将cookie返回到客户端
request.getRequestDispatcher("indes.jsp").forward(request, response);
tomcat配置context增加属性:
<Context sessionCookieDomain=".mydomain.com" sessionCookiePath="/">