P3P 和 跨域 (cross-domain) cookie 访问(读取和设置)

在IE浏览器中,通过设置P3P头可以在不同二级域名间实现跨域设置和读取Cookie。具体操作包括在源域名下创建包含脚本的文件,该脚本在目标域名下设置Cookie,并利用P3P政策CP值。这种方法允许不同一级域名下的页面共享Cookie。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在IE 里面跨域去设置 cookie跨域的实现,尝试了n中方法都不行,查了一下资料,可以通过设置header中的p3p值来实现,真不错:)

比如要访问b站在a站设置一个cookies,则可以这样做:
1.在b.com下建立一个文件cookies.htm
内容为:

复制代码代码如下:

<script language="javascript" src="http://a.com/setcookies.asp?par=a.com"></script>

2.a.com下的setcookies.asp的内容为:

复制代码代码如下:

<%
Response.AddHeader "P3P", "CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"
Response.Cookies("aaa").Domain = Request("par")
Response.Cookies("aaa") = "这是在b.com下通过访问a.com下文件的方法设置的cookies"
%>

这样通过访问b.com下的cookies.htm文件就可以在域a.com下设置和修改相应的cookies了,从而实现了跨域设置存取cookie的目的。

、、、、、、、、、、、、、、、、

是setDomain(),这个方法在同一个一级域名下的前提下能共享cookie。上面的事不过是跨域去设置cookie。在ie中一个页面调用另一个页面去设置cookie

并不是一个页面调用另一个页面 然后共享cookie通过p3p,这个行不通在不是一个一级域名下。

gy.com

<%@ page contentType="text/html; charset=utf-8" %>??
<%???
?? response.addHeader("Cache-Control", "no-cache");??
?? response.addHeader("Expires", "Thu, 01 Jan 1970 00:00:01 GMT");???
?? String ssocookie="www.sso12345678910.com";??
%>??
<script src="http://pv.zhan.sohu.com/a_setcookie.jsp?id=<%=ssocookie%>">??
</script>

pv.zhan.sohu.com:

[@72.144 kuaizhanStat-1.0-SNAPSHOT]# vi a_setcookie.jsp
<%
response.setHeader("P3P","CP=\"CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR\"");
String domainId=request.getParameter("id");
Cookie _cookie=new Cookie("test5",domainId);
_cookie.setMaxAge(30*60*100);
_cookie.setPath("/");
//_cookie.setDomain("sohu.com");
response.addCookie(_cookie);
%>

pv.zhan.sohu.com:取得cookie:

[@72.144 kuaizhanStat-1.0-SNAPSHOT]# cat tt.jsp
<%@ page contentType="text/html; charset=utf-8" %>??
<%??
?? Cookie cookies[]=request.getCookies(); //?????
?? Cookie sCookie=null;???
?? String sname=null;??
?? String name=null;??
?? if(cookies==null) //????? out.print("none any cookie");??
?? else?
?? {??
???? out.print(cookies.length + "<br>");??
???? for(int i=0;i<cookies.length; i++) //????? {??
?????? sCookie=cookies[i];??
?????? sname=sCookie.getName();??
?????? name = sCookie.getValue();??
?????? out.println("comment==>>>"+sCookie.getComment()+"\n");??
?????? out.println("getDomain==>>>"+sCookie.getDomain()+"\n");??
?????? out.println("getSecure==>>"+sCookie.getSecure()+"\n");??
?????? out.println("getVersion==>>"+sCookie.getVersion()+"\n");??
?????? out.println("cookiename==>>"+sname + "->" + "cookievalue==>>>"+name + "<br>");??
???? }??
?? }???
%>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值