我们知道对于相同域名主体的顶级域名和其他级别域名的cookie共享已经有解决方案,那就是设置统一的domain和path。
那么不同域名主体的各级域名读写cookie的话,可以使用http的header头属性p3p。
设置这个属性主要为了解决IE的cookie跨域问题,可以使用iframe或img标签来实现。
P3P(Platform for Privacy Preferences)在java中的使用:
a.com域名下建立index.jsp,引用b.com的设置或获取cookie的路径:
a.com
this is an iframe.
b.com的setcookie:
@RequestMapping("/test/setcookie")
public ModelAndView setcookie(HttpServletResponse response){
response.setHeader("P3P", "CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");
Cookie cookie = new Cookie("testp3p", "p3pvalue");
cookie.setPath("/");
response.addCookie(cookie);
return new ModelAndView("cookie");
}
b.comcookie设置完毕!
b.com建立index.jsp:
b.com
out.write(JSON.toJSONString(request.getCookies()));
%>
操作顺序:访问a.com的index.jsp,新开tab访问b.com的index.jsp,观察两边cookie的情况。
使用场景:
比如:login.taobao.com登录了,将记录会话的cookie写入".taobao.com",同时发起一个请求,将cookie传递到tmall域名并写入".tmall.com";当然taobao可并不是这么干的哈哈。