最近由于局方要做简易的单点登录,我也帮忙给他们提供方案。然后自己就做了一些关于cookie的实验这里记录一下。
需要解决的问题:
1、cookie跨应用共享
2、cookie的跨域共享
大家知道cookie默认情况下存储的数据只能单个应用共享,如果你设置了path指定path下的jsp才能共享。
cookie跨应用共享
Cookie cookie = new Cookie(name, URLEncoder.encode(value, "utf-8")); cookie.setMaxAge(maxAge); cookie.setPath("/");//同一个tomcat下的所有应用可以共享 response.addCookie(cookie);
cookie的跨域共享
跨域的时候如果是域名第一个字符需要是点,例如: .baidu.com。但是我们是内网的系统一般使用IP,如果是IP设置成127.0.0.1、localhost和虚拟机的ip地址 是不可以用的,需要设置为你在内网的ip地址。如果需要跨多个域,就在new一个Cookie了。
cookie.setMaxAge(maxAge); cookie.setPath("/"); cookie.setDomain("10.189.15.186"); response.addCookie(cookie);
有时候我们把事情想复杂了,其实cookie共享可能不是那么麻烦,看看引用他人的一段话:
其实大致原理如此,通过在www.taobao.com 的server端提供一个获取当前域下所有cookie的 php的请求地址,然后该php获取到cookie之后将期并成 js 代码,也就是以上第二个截图所看到的。然后再在 tmall 采用 jsonp 的方式跨域加载该 js 代码,从而实现 cookie 的跨域访问。