在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>");??
???? }??
?? }???
%>