现在我在本地测试Cookie如何跨域访问,想成功后再放上服务器。我先在本地配置了一个主域名:http://localhost:8080 还有一个二级域名:http://club.localhost:8080我要实现的效果是主域名和二级域名的Cookie同步,主要是:
1)如果在http://localhost:8080登录了,http://club.localhost:8080上不用再次登录,反之亦然;
2)如果在http://localhost:8080退出了登录,http://club.localhost:8080上也能退出登录,反之亦然。
现在情况是:登录时,在Servlet里设置了Cookie,页面读取也能正常,但是实现不了跨域。
servlet的主要代码如下:
Cookie ck = new Cookie("cookiename",value); //定义Cookie对象
ck.setPath("/"); //作用域
ck.setDomain(".localhost:8080"); //本地域名
ck.setMaxAge("2592000"); //Cookie有效期
response.addCookie(ck); //使这个Cookie生效
想请教各位,应该怎样实现Cookie跨域访问呢?最好可以在原代码上修改。如能解答,感觉万分~~~
1)如果在http://localhost:8080登录了,http://club.localhost:8080上不用再次登录,反之亦然;
2)如果在http://localhost:8080退出了登录,http://club.localhost:8080上也能退出登录,反之亦然。
现在情况是:登录时,在Servlet里设置了Cookie,页面读取也能正常,但是实现不了跨域。
servlet的主要代码如下:
Cookie ck = new Cookie("cookiename",value); //定义Cookie对象
ck.setPath("/"); //作用域
ck.setDomain(".localhost:8080"); //本地域名
ck.setMaxAge("2592000"); //Cookie有效期
response.addCookie(ck); //使这个Cookie生效
想请教各位,应该怎样实现Cookie跨域访问呢?最好可以在原代码上修改。如能解答,感觉万分~~~
这样的子域中跨域
在服务器这端进行查找
楼主看看这个可以吗?
这行错误
首先,.org .com .gov 等少数几个域名 设置cookie的时候至少要包含2个点,比如 .baidu.com
.china.gov ,其他的域名在设置cookie域的时候至少要包含3个点 ,比如 .sina.com.cn
所以ck.setDomain(".localhost:8080"); 这个设置直接被浏览器忽略。而且,域设置也不需要端口号。你可以在C:\WINDOWS\system32\drivers\etc\hosts文件里设置一些自己的域名,比如
127.0.0.1 local.com
127.0.0.1 club.local.com
127.0.0.1 www.local.com
,然后ck.setDomain(".local.com"); 就可以了如果你用到session了,还要重新设置jsessionid(在tomcat下是这个名字)这个cookie的域
String url = request.getHeader("Referer"); //获取前一个页面的url包括参数
Cookie ck = new Cookie("cookiename",null);
ck.setPath("/");
ck.setDomain(".fcars.com.cn");
ck.setMaxAge(0);
response.addCookie(ck);
response.setHeader("Refresh","2;url="+url+"");
session.removeAttribute("username");
我用到了session,如何重新设置jsessionid(在tomcat下是这个名字)这个cookie的域?
登出是可以,Cookie是可以同步失效了。但是Session不能同步失效啊,现在得想个办法来让主域名和二级域名的Session同步。。
谢谢你的多次回答,请问谁有实现Session跨域共享的代码可以分享一下!!!
URL url = new URL(startSite);
HttpURLConnection urlCon = (HttpURLConnection) url.openConnection();
urlCon.setDoOutput(true);
urlCon.setUseCaches(false);
urlCon.setRequestMethod("POST");
urlCon.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
OutputStream outstream = urlCon.getOutputStream();
name ="Username="+name+"&Pwd="+pwd;
outstream.write(name.getBytes());
outstream.flush();
outstream.close();
int code = urlCon.getResponseCode();
if (code == 200) {
//处理你的业务逻辑
}
让csdn的程序员讲解下吧