现在我在本地测试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.   

    出于安全考虑cookie不可跨域访问。只能在www.dddd.com   d1.dddd.com
    这样的子域中跨域
      

  2.   

    不能跨domain!只能想办法,把你需要共享cookie的应用放在同一个domain的不同path下
      

  3.   

    club.localhost不是localhost的子域如果楼主只是跨子域,不用测,放到现网肯定能用
      

  4.   

    我是想跨子域而已,就是在http://www.fcars.com.cn和http://club.fcars.com.cn通行就行
      

  5.   

    你上网查下 cookie的Domain的使用就行了,domain就是用于子域名访问cookie的
      

  6.   

    现在实现了第一步,就是在主域名登录http://www.fcars.com.cn,二级域名http://club.fcars.com.cn也能登录了。那第二步退出呢?如何实现同步退出?
      

  7.   

    我想只能是 推出时清除cookie吧  但想让同时退出具体需求是什么样的????
      

  8.   

    放一个logout页面到http://club.localhost:8080 子应用所在的目录,登出localhost的时候跳转到logout,执行下删除cookie和session操作。并设置logout执行完毕页面自动跳转回localhost登出页
      

  9.   

    不能跨域的话,把cookie放到服务器这端也行吧
    在服务器这端进行查找
      

  10.   

    http://blog.hc360.com/portal/personShowArticle.do?articleId=84804
    楼主看看这个可以吗?
     
      

  11.   

    cookie 存数据本来就是存在本地啊。你只要从本机获取就行了。有什么不能同步 的。
       
      

  12.   

    想要关闭浏览器 cookie失效的话设置cookie属性setMaxAge(-1)
      

  13.   

    ck.setDomain(".localhost:8080");    //本地域名 
    这行错误
    首先,.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的域
      

  14.   

    楼主在研究单点登录吧,可以去看下http://www.ad0.cn/netfetch/read.php/890.htm
      

  15.   

    在退出的时候,出现了问题,不能同步在主域名和二级域名退出。只能先在主域名退出,然后还要在二级域名退出一次。有什么办法可以同步得了的?我的退出页面代码是这样写的:
    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+"");
      

  16.   

    做个在线列表的线程,每有人登陆或退出都在该线程中同步增加或删除。当用户退出的时候清除该用户对应的COOKIE和线程里的信息。每个独立的项目都共用这一个用户列表。
      

  17.   

    我又找到问题所在了,原来我在18楼上的做法是对的,是可以在主域名和二级域名同时清除Cookie的了。现在问题在于:因为我要处理的不只是清除Cookie,还要清除Session。就是说,我在退出时,清除Session的时候,只是清除了主域名的Session,还有二级域名的没有清除,有什么办法可以同步清除主域名和二级域名的Session啊?现在用的清除Session语句如下:
    session.removeAttribute("username");
      

  18.   


    我用到了session,如何重新设置jsessionid(在tomcat下是这个名字)这个cookie的域?
      

  19.   

    重置jsessionid? 没听说过哦,登出的时候级联登出不就ok了
      

  20.   


    登出是可以,Cookie是可以同步失效了。但是Session不能同步失效啊,现在得想个办法来让主域名和二级域名的Session同步。。
      

  21.   

    哪位知道jsessionid是怎么联系cookie和session,做到session可以在主域名和二级域名共享的?请说说!!
      

  22.   

    http是无状态的协议,客户每次读取web页面时,服务器都打开新的会话,而且服务器也不会自动维护客户的上下文信息,session就是一种保存上下文信息的机制,它是针对每一个用户的,变量的值保存在服务器端,通过SessionID来区分不同的客户,session是以cookie或URL重写为基础的,默认使用cookie来实现,系统会创造一个名为JSESSIONID的输出cookie,我们叫做session cookie,以区别persistent cookies,也就是我们通常所说的cookie,而session cookie是存储于浏览器内存中的,并不是写到硬盘上的,这也就是我们刚才看到的JSESSIONID
      

  23.   


    谢谢你的多次回答,请问谁有实现Session跨域共享的代码可以分享一下!!!
      

  24.   

    有哪个朋友知道怎样实现Session跨域共享的吗?有的请讲一下,想结帖了
      

  25.   

    我做过一个类似的。。就是登出的时候,调用子域内的一个logout.jsp。让其失效,然后还回登出。。至于访问 子域我 是这么处理的。
    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) {
     //处理你的业务逻辑
      

  26.   

    Session跨域共享 不符合安全的机制。跨域的话就等于你的网站可以访问在sohu,yahoo……上的cookie了
      

  27.   

    csdn不就实现此功能了吗,
    让csdn的程序员讲解下吧
      

  28.   

    lz的主域和二级域“cookie跨域共享”,我觉得其实是一个domain的不同path下cookie共享罢了
      

  29.   

    今晚最后一顶,求解如何实现Session跨域共享,明天结帖