网上现在有很多关于跨域设置cookie的文章,但大多数都是php的文章,网上仍然有很多关于jsp
p3p的设置,但是必须要将浏览器的隐私设置成低才可以跨域设置cookie.查了n多文章发现他们都搞错了!(真郁闷死了,自己没有解决干什么要贴在自己的博客中?!害得我好惨!^@^)
下面是一个例子:
首先在hosts文件中设置(其中的192.168.73.1为您本机的ip,我写成127.0.0.1不行,可能是公司的域的设置问题)
192.168.73.1
www.a.com
192.168.73.1
www.b.com
[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.a.com/mp/test/a_setcookie.jsp?id=<%=ssocookie%>" >
- </script>
<%@ 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.a.com/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);
- %>
<%
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>" );
- }
- }
- %>
<%@ 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.b.com/mp/test/b_setcookie.jsp
http://www.a.com/mp/test/a_getcookie.jsp
便可看到通过跨域设置的cookie的值!
本文介绍了一种使用JSP实现跨域设置Cookie的方法。通过修改hosts文件及设置P3P策略,实现了不同域名间的Cookie共享,并提供了示例代码验证跨域功能。
1418

被折叠的 条评论
为什么被折叠?



