cookie跨域解决方案

我们知道对于相同域名主体的顶级域名和其他级别域名的cookie共享已经有解决方案,那就是设置统一的domain和path。

那么不同域名主体的各级域名读写cookie的话,可以使用http的header头属性p3p。

设置这个属性主要为了解决IE的cookie跨域问题,可以使用iframe或img标签来实现。

P3P(Platform for Privacy Preferences)在java中的使用:

a.com域名下建立index.jsp,引用b.com的设置或获取cookie的路径:

<html>
<body>
<h2>a.com</h2>
<iframe src="http://b.com/test/setcookie">
    this is an iframe.
</iframe>
</body>
</html>

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");
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>b.com</title>
</head>
<body>
cookie设置完毕!
</body>
</html>

b.com建立index.jsp:

<%@ page import="com.alibaba.fastjson.JSON" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body>
<h2>Hello World! redis2.com</h2>
<%
    out.write(JSON.toJSONString(request.getCookies()));
%>
</body>
</html>

操作顺序:访问a.com的index.jsp,新开tab访问b.com的index.jsp,观察两边cookie的情况。


关于各种语言设置p3p的方式可参照http://viralpatel.net/blogs/how-to-set-third-party-cookies-with-iframe/

你可能感兴趣的:(cookie跨域解决方案)