IE8 中 session 管理的变化(转)

来源:互联网 发布:广州房价 知乎 编辑:程序博客网 时间:2024/04/28 16:34

 

IE7中,同一个窗口(IE 进程)共享一个session。

IE8中,所有打开的IE窗口(IE 进程)共享一个session。除非,用户通过菜单 File > New session  打开新窗口,或者使用命令行参数 iexplore.exe -nomerge 来打开IE。  另外,当所有IE窗口被关闭后,session 结束。

 

http://www.cnblogs.com/phaibin/archive/2009/05/08/1452811.html

 

http://blog.sina.com.cn/s/blog_5fdc8d6f0100cx8l.html

http://hi.baidu.com/%C6%AE%B9%FD%CD%B8%D0%C4%C1%B9/blog/item/e6a84d344485111a91ef3954.html

http://hi.baidu.com/%C6%AE%B9%FD%CD%B8%D0%C4%C1%B9/blog/item/faf7b8cee2906936f9dc614b.html

 

 

二十六、是否只要关闭浏览器,session就消失了

*************************************************************************************

程序一般都是在用户做log off的时候发个指令去删除session,然而浏览器从来不会主动在关闭之前通知服务器它将要被关闭,因此服务器根本不会有机会知道浏览器已经关闭。服务器会一直保留这个会话对象直到它处于非活动状态超过设定的间隔为止。

之所以会有这种错误的认识,是因为大部分session机制都使用会话cookie来保存session id,而关闭浏览器后这个session id就消失了,再次连接到服务器时也就无法找到原来的session。

如果服务器设置的cookie被保存到硬盘上,或者使用某种手段改写浏览器发出的HTTP请求报头,把原来的session id发送到服务器,则再次打开浏览器仍然能够找到原来的session。

恰恰是由于关闭浏览器不会导致session被删除,迫使服务器为session设置了一个失效时间,当距离客户上一次使用session的时间超过了这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把session删除以节省存储空间。

  由此我们可以得出如下结论:

  关闭浏览器,只会是浏览器端内存里的session cookie消失,但不会使保存在服务器端的session对象消失,同样也不会使已经保存到硬盘上的持久化cookie消失。

 


 

二十七、打开两个浏览器窗口访问应用程序会使用同一个session还是不同的session

*************************************************************************************

通常session cookie是不能跨窗口使用的,当你新开了一个浏览器窗口进入相同页面时,系统会赋予你一个新的session id,这样我们信息共享的目的就达不到了。

此时我们可以先把session id保存在persistent cookie中(通过设置session的最大有效时间),然后在新窗口中读出来,就可以得到上一个窗口的session id了,这样通过session cookie和persistent cookie的结合我们就可以实现了跨窗口的会话跟踪。

 

 

=================================

 

就session的实现而言,好像是这样的:   

  (1)当有Session启动时,服务器生成一个威一值,称为Session   ID(好像是通过取进程ID的方式取得的)。   

  (2)然后,服务器开辟一块内存,对应于该Session   ID。   

  (3)服务器再将该Session   ID写入浏览器的cookie。   

  (4)服务气内有一进程,监视所有Session的活动状况,如果有Session超时或是主动关闭,服务器就释放改内存块。   

 

  (5)当浏览器连入IIS时并请求的ASP内用到Session时,IIS就读浏览器Cookie中的Session   ID。   

  (6)然后,服务检查该Session   ID所对应的内存是否有效。   

  (7)如果有效,就读出内存中的值。   

  (8)如果无效,就建立新的Session。   

 

  注意:   

  (1)在大浏览量的网站,Session并不保险,我们过去的网站就经常碰到存在Session中得值不正确(可能出现重复的Session   ID)。   

  (2)Session   ID不能从硬盘上的Cookie文件获得,如果想在客户端获知自己的Session   ID,只能通过JavaScript来读取(怎么干就自己想办法了)。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xiaoxiaohai123/archive/2008/12/20/3564187.aspx

 

 

 

 

 

==============================================

 

同一个exe共享cookie这是IE内核地规则

 

Windows Forms里面的Webbrowser是对IE附带的WebBrowser控件的封装。

IE附带的WebBrowser控件使用WinInet进行通讯。
WinInet的Session是每个进程一个。