IE中用window.open() 新开页面,有时会丢失Session 的问题。
有关这个问题的详细描述,请参看:
http://support.microsoft.com/default.aspx?scid=kb;EN-US;196383
我摘要如下:
其实不仅仅是丢失Session的问题,Authentication (用户验证信息)也会丢失。
这个问题出现的原因是因为 :
"Browse In New Process." 某些情况下,你打开IE的一个新进程,这些信息没有被同步过去。
解决方法当然是老套的及时打补丁。
上述文中,通过设置"Browse In New Process." 演示了这个问题。
在Win2003中,这个设置不在IE的 Internet 选项 -- 高级中(Win2003 IE6 中找不到这个设置),
而在资源管理器的 -- 文件夹选项 -- 查看 -- 在单独的进程中打开文件夹窗口。
如下图的设置:
设置好后,你在资源管理器中输入演示的ASP文件,(注意是资源管理器,不是IE)。点击 WindowOpen 按钮,你就有一定的概率,看到新开的页面跟原来的页面不是同一个Session。
以上演示是在升级了微软所有已知补丁后的Win2003上作的测试,如果是没打过补丁的版本,可能概率更高,我没有测试过。
演示用到的ASP文件,上面提到的URL中给出了,就不再重复。
另外,明天 北京.net Group 活动的主题是多线程,有兴趣的请参看以下地址:
http://www.mscommunity.com/UserGroup/Events/default.aspx
打印 | 张贴于 2004-06-23 21:00:00 | Tag:技术随笔
留言反馈
我都气得想砸电脑了
连续三通宵搞这问题了,原来有这么多兄弟也有问题啊
有谁解决了劳驾给教教偶啊cbljc@163.com QQ:12407436
后来改用response.Redirect,问题解决了。但是我之前是使用iframe做的登录界面,用response.Redirect似乎又不能设置target,势必要修改很多页面。
不知道有没有其他两全的解决方法?
一次,注意了下,检测了所有请求客户段使用的情况;
使用IE内核的浏览器基本上都会存在这个问题;但FF没有测试,不知道是否问题依旧;
目前使用的是J2EE处理session,看大家的情况,PHP,ASP 都同样存在这样的问题;不排除与客户段的情况存在关系。但不确定到底什么原因引起的。我觉得可能是:
1。客户端打开窗口等程序引起;
2。Cookie使用4K限制存在的问题;
3。客户端浏览器使用某些插件,或者某些特殊设置(如采用新的进程打开窗口MAXTHON等)导致该问题出现;
4。最近IE7也经常出现该问题;
当然,对于Session机制本身是无可厚非的。但各种客户端的条件是难以控制的;不知道这个问题什么时候才能得到解决; 现在的Web应用,月来越难了。 标准不统一;客户端情况复杂;
大家,如果有解决该问题的,希望执教;我的邮箱 bohemia1985@163.com.
问题依旧阿
我一直丢失
我一直丢失
我一直丢失
我一直丢失
我一直丢失
我一直丢失
我一直丢失
我一直丢失
用session不行,改用cookie也不行
不知道该怎么做~~~~~~~~~~~~~~~~~~~~~
现在不敢用window.open _blank 了
郁闷~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
FF不会是因为FF在同一个窗口打开,大虾们有什么办法?
如果有人遇不上这问题,会不会是server的设定大家不同,例如在global.asa里头的设定???
FF怎么就可以IE就不行~~~
郁闷啊
我的程序
给用户的地址是Default.aspx 加载Default.aspx时
弹出登录对话框UserLogin.aspx(这是一个网页对话框)
因此用户实际看到的其实是我的UserLogin.aspx(Default.aspx他不可能看到)
成功即进入LoginDefault.aspx
(这是个框架页 左边为菜单 上有:当前登录用户:这里就要取得Session的值)
注销按钮的连接地址是Default.aspx 即又重新加载Default.aspx---->UserLogin.aspx
第一次登录 Session没有值 然后我按LoginDefault.aspx 上的注销
第二次登录 Session有值
急啊 气死我了 怎么办?????????????????
或者IE有什么补丁了吗?
我试过了,WINDOWS 2000下面的IE是好的但是IE+ XP SP2,+WINDOWS 2003就错
以前写的程序。后台是用 session 保存的登录信息 在 2000下面用得好好的。。
现在换了一台 2003 的主机。就登陆不进后台了。session不保存了。
我得到了以上答案,但是我仍然需要使用Session保存数据而且要使用Frame,谁能告诉我该怎么办???
关键是你的结论并非每个用户都是这样,我看还是和客户端IE有关系
我使用 Linux +Apahce +PHP 的服务端,也有少量用户反应登陆不了,和打开新窗口session 消失的问题
我得到了以上答案,但是我仍然需要使用Session保存数据而且要使用Frame,谁能告诉我该怎么办???
偶也常遇到掉失Session的问题呀,不知怎样解决
但我自己怎么也试不出来,看来是和客户端有关
j-xg@tom.com
比方说
1。如果要打开新窗口的话,一定要等新窗口转载完成后,再关闭父窗口
2。可以在原来的窗口中打开,winow.open 的target= self
甚至Session还错乱 新开的IE会修改老的IE的Session
这样的问题到底要怎么解决呢??
甚至Session还错乱 新开的IE会修改老的IE的Session
我这个blog中只是谈到客户端丢失的问题。
至于丢失window.open丢失Session。 我自己几乎没碰到过,但是网友总有反馈问题,有些问题就是客户端丢失的。
我们的服务器是win2000 server中文版。
还有一台是win2003 server中文版。
都有这个问题。
客户端是win2000 server和winxp。
请指教!
看来你没碰到过这个问题。
这个问题IE6 在某些情况下仍然是有的。
不要太迷信KB中写的东西。
Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article. This bug was corrected in Internet Explorer 4.01 Service Pack 2 and Internet Explorer 5.
The information in this article applies to:
Microsoft Internet Explorer (Programming) 4.0
Microsoft Internet Explorer (Programming) 4.01
Microsoft Internet Explorer (Programming) 4.01 SP1