网上现在有很多关于跨域设置cookie的文章,但大多数都是php的文章,网上仍然有很多关于jsp p3p的设置,但是必须要将浏览器的隐私设置成低才可以跨域设置cookie.查了n多文章发现他们都搞错了!(真郁闷死了,自己没有解决干什么要贴在自己的博客中?!害得我好惨!^@^)
下面是一个例子: 首先在hosts文件中设置(其中的192.168.73.1为您本机的ip,我写成127.0.0.1不行,可能是公司的域的设置问题) 192.168.73.1 www. 192.168.73.1 www. [1]编写文件 b_setcookie.jsp
<%@ 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://www./mp/test/a_setcookie.jsp?id=<%=ssocookie%>"> </script> 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("test",domainId); _cookie.setMaxAge(30*60*100); _cookie.setPath("/"); response.addCookie(_cookie); %> a_getcookie.jsp
<%@ page contentType="text/html; charset=utf-8" %> <% Cookie cookies[]=request.getCookies(); // 将适用目录下所有Cookie读入并存入cookies数组中 Cookie sCookie=null; String sname=null; String name=null; if(cookies==null) // 如果没有任何cookie out.print("none any cookie"); else { out.print(cookies.length + "<br>"); for(int i=0;i<cookies.length; i++) // 循环列出所有可用的Cookie { 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>"); } } %> 测试时依次请求 http://www./mp/test/b_setcookie.jsp http://www./mp/test/a_getcookie.jsp 便可看到通过跨域设置的cookie的值! |
|