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 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog