cookie跨域解决方案
博客专区 > 菜蚜 的博客 > 博客详情
cookie跨域解决方案
菜蚜 发表于2年前
cookie跨域解决方案
  • 发表于 2年前
  • 阅读 132
  • 收藏 16
  • 点赞 1
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

摘要: cookie跨域 p3p http header

我们知道对于相同域名主体的顶级域名和其他级别域名的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>b.com</h2>
<%
    out.write(JSON.toJSONString(request.getCookies()));
%>
</body>
</html>

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

使用场景:

比如:login.taobao.com登录了,将记录会话的cookie写入".taobao.com",同时发起一个请求,将cookie传递到tmall域名并写入".tmall.com";当然taobao可并不是这么干的哈哈。


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

共有 人打赏支持
粉丝 19
博文 54
码字总数 29198
×
菜蚜
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: