如何让IE4中打开的新窗口,与原来的窗口使用同一个Session

deanjiang 2000-08-22 01:46:00
我的程序中需要在客户端弹出一个窗口,用户在理棉田一些数据,然后把这些数据提交回服务器。服务器端的asp根据处理的情况,返回客户端一段javascript(比如关闭新开的窗口,刷新原来的主窗口,改变主窗口中的值等等)。这一起都没问题。
但是,当我加上了权限检查之后,问题就来了,虽然用户已经登录过了,但新窗口使用的是一个新的Session(新的cookie "SESSIONIDASFGAG"),这个Session中用户未曾登录。于是登录画面又一次出现。给用户造成极大的不便。有没有办法是这两个窗口保持同一个Session?!!
我打开新窗口的方式是:
<a href="....." target="_blank">或
window.open("....");
注:以上问题在Netscape中部存在,Netscape中一个进程的所有窗口都是同一个Session
急!!!
...全文
199 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
deanjiang 2000-08-24
  • 打赏
  • 举报
回复
hblinux:
谢谢你的回答,不过不是你想的那样的。Session ID 存放在浏览器的cookie中,cookie的名称为 ASPSESSIONIDXXXXXXXX ,后面的XXXX是随机数每次启动iis服务时产生的。我所描述的现象是的确发生了,不仅用Session.SessionID在服务器端看过,在客户端页用cookie看过,甚至我用监视工具截取了HTTP的数据报来查错。
问题我已经解决了,或者说查出原因了,但没有解决办法。这个帖自我会继续留一段,让大家都看看有好处。原因在下面描述:
☆☆☆★★★谁要想拿分就要给出解决方案◇◇◇◆◆◆:)。
根本的原因是微软的bug!我不是开玩笑,在support.microsoft.com中查Q196383
这个bug只对IE4存在,IE5已经解决了(部分而已,实际上还是有问题--deanjiang)
当在IE4中打开一个子窗口时,程序实际上时创建一个新的线程,问题是IE4会拿别的进程来创建线程(当然也是IE4的进程),甚至在没有别的进程时它自己创建一个新的进程。由于临时Cookie(如SessionID)是保存在进程内的,新窗口无法访问到原来的SesssionID,因而启动了一个新的Session.不过有时候,它也会用别的进程的cookie中的SessionID来登录。
惟一的办法是让客户将IE“在新过程中浏览”选项去掉。这样做可以缓解这一问题,但也不能根除
更详细的到微软站点看吧。
Q196383

华南虎哥 2000-08-24
  • 打赏
  • 举报
回复
---------------------------------------------------------------------------
ASP给每个用户会话分配了唯一的识别标志。用户会话首次被创建时,其ID就产生了,并一直随用户在网站上保留着。
---------------------------------------------------------------------------
你提出的问题可以从以下几点去验证:
1)如果你认为SESSION ID不一样,可以这样做:要获取会话ID,要用到Session对象的Session ID属性,也就是使用Session.SessionID来查看不同页面的sessionID
2)出现这种情况还可以与会话时间相关:控制用户处于非活动状态而会话不会被超时的最长时间。即可以用Session对象的Timeout属性设定超时时间值。比如Session.Timeout=60,这个在Global.asa文件可以设置全局的
如果还有什么问题请EMAIL:hblinux@163.net
华南虎哥 2000-08-23
  • 打赏
  • 举报
回复
---------------------------------------------------------------------------
ASP给每个用户会话分配了唯一的识别标志。用户会话首次被创建时,其ID就产生了,并一直随用户在网站上保留着。
---------------------------------------------------------------------------
你提出的问题可以从以下几点去验证:
1)如果你认为SESSION ID不一样,可以这样做:要获取会话ID,要用到Session对象的Session ID属性,也就是使用Session.SessionID来查看不同页面的sessionID
2)出现这种情况还可以与会话时间相关:控制用户处于非活动状态而会话不会被超时的最长时间。即可以用Session对象的Timeout属性设定超时时间值。比如Session.Timeout=60,这个在Global.asa文件可以设置全局的
如果还有什么问题请EMAIL:hblinux@163.net

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧