现象描述
一、先登陆,后直接输入登陆结果的URL
TT :
1.登陆mail.163,结果: h tt p://tg 4a 32.mail.163.com/a/j/js3/main.jsp?sid=iAlviR ll MaFGBGUrCg ll kgoQsKodCNdg
2.直接输入h tt p://tg 4a 32.mail.163.com/a/j/js3/main.jsp?sid=iAlviR ll MaFGBGUrCg ll kgoQsKodCNdg
两个都可以收发邮件。
IE:
1.登陆mail.163.com,结果:h tt p://tg 3a 20.mail.163.com/a/j/js3/main.jsp?sid=WAQpwleebmJTBTasJLeeVNGWkTF Gd wDe
2.Ctrl+N打开新窗口
两个都可以收发邮件。
现象:这时 TT ,IE都是使用第一次登陆相同的sessionID,都可以收发邮件。
二,两次登陆相同邮箱
TT :
1.登陆mail.163.com,结果:h tt p://tg 2a 17.mail.163.com/a/j/js3/main.jsp?sid=TAgbVduufrvlZlsQUjuuWIeBMjuaBcSH
2.登陆mail.163.com,结果:h tt p://tg 1a 159.mail.163.com/a/j/js3/main.jsp?sid=hDpHXVppZVxyCySJkVppebFSpEGRNnnu
前一个登陆失效,不能收发邮件,后登陆的可以收发邮件
IE:
1登陆mail.163.com,结果:h tt p://tg 3a 81.mail.163.com/a/j/js3/main.jsp?sid=xBpPDn tt bQPhahJhPK tt ZKfLUAodYTeK
2登陆mail.163.com,结果:h tt p://tg 4a 30.mail.163.com/a/j/js3/main.jsp?sid=g AA xfnkkLesXRXnMsmkkdrBfpkceLobk
两个都可以收发邮件。
现象:分两次登陆, TT 和IE都使用不同的sessionID,但是 TT 会把第一个session失效,而IE则两个sessionID都有效。
现象分析:
第一种情况, TT 和IE表现相同,忽略。
关键是第二种情况,为什么 TT 只有最后一次登陆的有效,而前一次的登陆失效了呢?况且因为两次的sessionID是不同的,应该是两个独立的Session,不可能会互相影响的(我们都知道,两个独立的session是不可能互相影响的)。
从服务器端角度来看,既然IE都可以,也就说明后台是可以多次登陆的,不会单独是后台的问题。可能的原因两种:
1. TT 客户端差异
2. TT 客户端与后台交互流程和IE与后台交互流程不同
考虑到 TT 的内核实际上采用的就是IE的内核,因此第2种可能性较低。
那么先着重考察下第一种情况,即 TT 浏览器与IE浏览器多次访问同一个站点时有什么不同吗,是这种不同导致session生命周期不同?
仔细查看系统进程,发现另外一种现象:
对于 TT 无论情况一、还是情况二,系统只起一个进程
IE则不同,对情况一,IE起一个进程,而情况二,IE则起两个进程
很明显,情况一, TT 和IE表现相同,情况二 TT 与IE表现不同是因为 TT 只起一个进程,而IE起了两个进程。
结论:
根据现象分析,可以推测出结论, TT 在多次打开同一个网站时,虽然后台产生了不同的session,但是由于这时多个窗口都是在同一进程内,共享了某些进程空间,某种原因导致前面的登陆内容结果被覆盖或是丢失,因此只有最后一次登陆的session有效了(实际上后台应该两个都还有效,没有进一步验证)。而IE是两个截然不同的进程,运行在自己的地址空间,因此各自独立,互不影响。
判断IE是否共享session,关键是要看它是否是属于同一个进程。
以上纯属推测。
seeme