谢谢,是可以但是第二次访问的时候怎么判断呢,是同一个session

解决方案 »

  1.   

    是同一个项目吗?是在同一个tomcat下吗?
      

  2.   

    是的,应该可以通过SESSION id的值来获取吧,比如访问到aaaa.com的时候记录ID的值,跳转到bbbb.com的时候传参数把session的值传过去,到bbbb域名的时候通过ID取到SESSION的值
      

  3.   

    谢谢,是可以但是第二次访问的时候怎么判断呢,是同一个session如果是共享父域名的话可以自己搞个cookie,如果不是的话,就比较麻烦了,需要通过其他的方式获取这个id
      

  4.   

    谢谢,是可以但是第二次访问的时候怎么判断呢,是同一个session如果是共享父域名的话可以自己搞个cookie,如果不是的话,就比较麻烦了,需要通过其他的方式获取这个id
    我觉得可以啊,访问第一个的时候保存session id啊,跳转到下一页面的时候,通过session id的值是可以取出服务器上的session的啊,因为都是用的同一个服务器啊
      

  5.   

    谢谢,是可以但是第二次访问的时候怎么判断呢,是同一个session如果是共享父域名的话可以自己搞个cookie,如果不是的话,就比较麻烦了,需要通过其他的方式获取这个id
    我觉得可以啊,访问第一个的时候保存session id啊,跳转到下一页面的时候,通过session id的值是可以取出服务器上的session的啊,因为都是用的同一个服务器啊cookie不能跨域,跨域的话要用其他的方案
      

  6.   

    如果web服务器是一个,那就没必要用session共享了,将两个域名绑定到一个ip地址和端口上
    感觉楼主是分别起了两个web服务器,那可以使用apache nigix haproxy 这样的工具来做代理。
    必须要保证出去的是一个ip和端口才行。
      

  7.   

    楼主的问题不是session共享的问题,而是cookie跨域问题,之所以出现两个session,是因为aaa.com下的cookie不能在访问bbb.com时带上,所以server认为是一个新的session。
    解决的办法如上面有人提到,试试在页面上写上javascript代码:document.domain=aaa.com;这样就不区分是哪个域名了,都是aaa.com。理论上是这样,但我没试过,不知道好使不好使。
    另外的终极解决方案就是放弃用cookie来记录sessionid,而是用urlrewrite方式。只不过这样的改动会比较大,整个工程中的url输出都要做urlrewrite处理。
      

  8.   

    domain上要加引号:document.domain="aaa.com";如果两个域名是同一个主域名的二级域名,比如aaa.xxx.com和bbb.xxx.com,document.domain="xxx.com";应该可以,如果是aaa.com和bbb.com就不知道行不行了
      

  9.   

    domain上要加引号:document.domain="aaa.com";如果两个域名是同一个主域名的二级域名,比如aaa.xxx.com和bbb.xxx.com,document.domain="xxx.com";应该可以,如果是aaa.com和bbb.com就不知道行不行了
    跨域问题需要在Safari浏览器上测试下,Safari浏览器对跨域安全做得特别死,一般会不允许通过。
    看下我的博客,里面有urlrewrite的方法,但是那是自动判断cookie是否被禁用,应该不适合你这种,你应该使用不自动判断的那种,而是全rewrite,调用response.encodeURL(String)
    http://blog.csdn.net/norriszhang/article/details/20380023
      

  10.   


    大哥我都重复好多次啦,一个WEB服务器,域名不一样而已,我觉得SESSION共享没有没有必要做,一个服务器里面,通过SESSION ID应该就可以访问到SESSION,我会做做测试的
      

  11.   

    谢谢,是可以但是第二次访问的时候怎么判断呢,是同一个session如果是共享父域名的话可以自己搞个cookie,如果不是的话,就比较麻烦了,需要通过其他的方式获取这个id
    我觉得可以啊,访问第一个的时候保存session id啊,跳转到下一页面的时候,通过session id的值是可以取出服务器上的session的啊,因为都是用的同一个服务器啊cookie不能跨域,跨域的话要用其他的方案
    一个WEB应用服务器,不同的域名,一个WEB应用服务器,SESSION ID是唯一的吧
      

  12.   

    两个域名是绑定到一个IP跟端口上的
    那应该都是一个session啊,web容器都是一样的,怎么会是两个呢
      

  13.   

    两个域名是绑定到一个IP跟端口上的
    那应该都是一个session啊,web容器都是一样的,怎么会是两个呢
    开始我也觉得应该是一个,但是公司一个工程师告诉我不一样,所以才提问的
      

  14.   

    domain上要加引号:document.domain="aaa.com";如果两个域名是同一个主域名的二级域名,比如aaa.xxx.com和bbb.xxx.com,document.domain="xxx.com";应该可以,如果是aaa.com和bbb.com就不知道行不行了
    跨域问题需要在Safari浏览器上测试下,Safari浏览器对跨域安全做得特别死,一般会不允许通过。
    看下我的博客,里面有urlrewrite的方法,但是那是自动判断cookie是否被禁用,应该不适合你这种,你应该使用不自动判断的那种,而是全rewrite,调用response.encodeURL(String)
    http://blog.csdn.net/norriszhang/article/details/20380023
    感谢回答,跳转的时候都是使用response.sendRedirect(response.encodeRedirectURL(url));
    同一个WEB容器,不同域名,应该可以通过session id的到session的吧
      

  15.   

    两个域名是绑定到一个IP跟端口上的
    那应该都是一个session啊,web容器都是一样的,怎么会是两个呢
    开始我也觉得应该是一个,但是公司一个工程师告诉我不一样,所以才提问的
    抓个包验证下,看看session id 一不一样
      

  16.   

    告诉过你了cookie不能跨域你在qq.com登录了,难道jd.com也能收到你的cookie和sessionid?
    自己看一下cookie里记录session那个域就很清晰了啊
      

  17.   

    domain上要加引号:document.domain="aaa.com";如果两个域名是同一个主域名的二级域名,比如aaa.xxx.com和bbb.xxx.com,document.domain="xxx.com";应该可以,如果是aaa.com和bbb.com就不知道行不行了
    跨域问题需要在Safari浏览器上测试下,Safari浏览器对跨域安全做得特别死,一般会不允许通过。
    看下我的博客,里面有urlrewrite的方法,但是那是自动判断cookie是否被禁用,应该不适合你这种,你应该使用不自动判断的那种,而是全rewrite,调用response.encodeURL(String)
    http://blog.csdn.net/norriszhang/article/details/20380023
    感谢回答,跳转的时候都是使用response.sendRedirect(response.encodeRedirectURL(url));
    同一个WEB容器,不同域名,应该可以通过session id的到session的吧
    不可以,cookie是按域名分开存储的,比如aaa.com下写进一个cookie叫jsessionid,当你访问bbb.com时,这个cookie不会被携带,所以bbb.com对应的server(与aaa.com指向的是同一个server)拿不到这个jsessionid。
    另外,为什么是encodeRedirectURL?应该是encodeURL方法呀。
      

  18.   

    domain上要加引号:document.domain="aaa.com";如果两个域名是同一个主域名的二级域名,比如aaa.xxx.com和bbb.xxx.com,document.domain="xxx.com";应该可以,如果是aaa.com和bbb.com就不知道行不行了
    跨域问题需要在Safari浏览器上测试下,Safari浏览器对跨域安全做得特别死,一般会不允许通过。
    看下我的博客,里面有urlrewrite的方法,但是那是自动判断cookie是否被禁用,应该不适合你这种,你应该使用不自动判断的那种,而是全rewrite,调用response.encodeURL(String)
    http://blog.csdn.net/norriszhang/article/details/20380023
    感谢回答,跳转的时候都是使用response.sendRedirect(response.encodeRedirectURL(url));
    同一个WEB容器,不同域名,应该可以通过session id的到session的吧
    不可以,cookie是按域名分开存储的,比如aaa.com下写进一个cookie叫jsessionid,当你访问bbb.com时,这个cookie不会被携带,所以bbb.com对应的server(与aaa.com指向的是同一个server)拿不到这个jsessionid。
    另外,为什么是encodeRedirectURL?应该是encodeURL方法呀。
    我的意思是说,访问bbb.com带一个session id的参数,这个id是访问aaa.com产生的,然后服务器通过这个session id去取出session这样也不行么,encodeRedirectURL跟encodeURL有啥区别么
      

  19.   

    感谢回答,...
    不可以...
    我的意思是说,访问bbb.com带一个session id的参数,这个id是访问aaa.com产生的,然后服务器通过这个session id去取出session这样也不行么,encodeRedirectURL跟encodeURL有啥区别么
    1. 带session id的参数,你是指带上http://bbb.com/?sessionid=xxxxxx这样带上参数?那如果这样,容器不会给你找sessionid=xxxxxx的session,你只能自己去找,等于你自己实现一遍session的机制,你用的也不是HttpSession。
    用encodeURL方法生成的url你可以看下,大概是这样的形式:http://bbb.com;jsessionid=xxxxxx?param1=value1&param2=value2。这是只有java ee规范认识的一种形式,用;引出jsessionid,你要这样拼出来也行,容器是认识的,但是你要是跟param1=value1一样拼上,容器是不认识的。
    2. encodeRedirectURL我没用过,你找下API,看下跟encodeURL有什么区别。
      

  20.   

    Ie7 or ie 8 share session