x53611925 2010-01-15 13:45 采纳率: 100%
浏览 1620
已采纳

关于用window.open打开网页session丢失的问题

今天遇到一个问题,我们程序因为某种原因后台管理与显示界面是分开的。
于是在一台主机中架了两个tomcat,现在后台管理需要加一个预览按钮,于是用window.open打开显示相关界面
也就是说http://192.168.0.200:8080中有一个网页用window.open打开http://192.168.0.200:8081的一个界面。
会出现session丢失的情况,(父窗口的session会丢失)。
当我把外网移动到另一台服务器上比如http://192.168.0.159:8081(ip不同),就不会出现问题。

哪位大哥知道是怎么回事啊?小弟现在这谢谢了

我的环境:Tomcat5.5,jdk1.5,windows 2000 server,ie6.0

[b]问题补充:[/b]
不是共享session是[b]父窗口[/b]session丢失,window.open打开的新窗口不需要session

还有链接党就不要在这混了。分不会给你们的
[b]问题补充:[/b]
我试过用target blank方法,还是会丢失session。个人认为是不是因为ip相同,所以session值发生序乱导致的?
[b]问题补充:[/b]
Ihavegotyou

在tomcat下cookie冲突好像没法子解决啊
[b]问题补充:[/b]
我的ie版本为IE6.0测试IE7也不可用

  • 写回答

16条回答 默认 最新

  • kukuwuwu 2010-01-15 15:34
    关注

    因为sessionid 在客户端是存储在cookie中的
    cookie 用 域 来控制对cookie的访问
    和端口无关
    当你用以个ip来访问不同端口的时候
    实际域是相同的 也就是说
    http://192.168.0.200:8080 http://192.168.0.200:8081
    域是一样的

    所以你在预览的时候 session 被覆盖成http://192.168.0.200:8081的session
    原来的http://192.168.0.200:8080 session 也就消失了

    当你用不同的ip地址访问时 域分别为 192.168.0.200 和192.168.0.159
    cookie 分别为这两个域建立了sessionid 而 sessionid 是用来标示session的

    所有就正常

    当你用域名访问时,分别用两个二级域名, 比如 admin.xxxxx.com www.xxxxx.com
    如果用ip 可以分别用两个ip来提供服务
    如果是单机 可以一个用回路 比如 127.0.0.1 一个用你的局域网地址 比如192.168.0.200

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(15条)

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作