IE7与IE8浏览器下session cookie的共享问题以及区别

IE7与IE8浏览器下session cookie的共享问题以及区别

在近日的项目开发中,出现一个session被冲掉的问题,一查是Ie8导致的。

 

众所周知Session cookie被广泛用来做浏览器用户身份校验。在近期的项目测试中就遇到一个相关的问题,发现在两不同的IE8窗口里面并以两个不同用户身份分别登录后,前面登录的用户页面会在第二个用户登录以后刷新成第二个用户信息页面,但是在IE6浏览器下测试是好的,并未发现类似问题。

查了整个项目中session设置的地方,并未发现问题。最后分析是session被浏览器共享了,于是网上查了IE8IE7的区别,发现相比IE7, IE8的Session管理有很大变化,这是Web开发者需要注意的:

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

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

这个问题的关键是,cookie在不同的IE进程间是否共享,有些COOKIE是完全共享的,有的作用域只能局限于单个进程。因为cookie中保存着你的sessionid它被服务器用来决定是否应该生成的新的session。

Session默认情况下是以cookie内存储的sessionId作为识别标志,而cookie在浏览器之间独立的。所以如果是同一个浏览器不管开多少个窗口,都只有一个Session。

解决在IE8浏览器中测试时session共享问题:

1、在IE8的快捷方式的目标栏中添加-nomerge,再打开IE时就不会共享同一个session了。

2、使用命令行参数 iexplore.exe -nomerge 来打开IE。

 

在我們的測試環境中,常常同時要用不同身份連上同一台Web Server。之前使用IE7/IE6時,只要另外開一個IE連上同一網站,IE每次都會跳出來問帳號密碼,因此可做到每個IE各用不同身份登入的效果。

IE8做了一些改變,讓多個Tab或多個IE視窗共享一個Process,以節省資源,改善效能。但副作用是,當你在一台Web完成登入後,之後再開Tab、甚至另開IE連上同一網站,都會共享相同的Session。這意味著另開Tab或另開的IE都會承襲先前登入的身份、接續剛才的Session,如此下來,等同被剶奪一人分飾多角的能力。

 

IE 8在默认情况下,会话都是一样的。

解决方法有两个:

  1. 在IE 8中,假设你没有打开菜单栏,请按下键盘上的Alt键打开菜单栏,然后依次选择“文件-新建会话”,这样IE会自动打开一个新窗口,但该窗口所在会话和原窗口所在会话是完全隔离的,无法共用会话Cookie,因此可以按照需要放心打开多个会话,并使用不同的马甲登录。
  2. 如果觉得麻烦,或者有其他原因,也可以创建一个带有特殊参数的快捷方式:“iexplore.exe -nomerge”,使用该参数打开的IE窗口也将使用独立的一套会话Cookie。
  3. 实在不行就得要求用户在需要的时候用新建会话的方式实现。
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页