ie8 火狐 session 问题
问题描述:
ie8和火狐都可以选项卡的形式打开网页,以前ie6开多个窗口,在任务管理器中会出现多个explore.exe的进程,但是火狐不会。以前还认为这样很还,因为它可以减少我们电脑的压力,达到一定的选项卡数量后才又开启一个进程,就是说当我打开多个网页的时候它的会话也是共用的。
比如我现在在ie6上,打开一个登录页面,登录A人员信息。此时我再打开一个ie6的浏览器打开同样的登录页面,登录B人员信息,ie6能达到预期效果,让A,B同时在线。
现在我用ie8按照上面的步骤操作,当我打开B页面时,我再刷新A页面,A页面的信息变成了B页面人员的信息。因为ie8和火狐一样它会session共享,会认为是在同一个session,第二次提交修改了session的值。
那么现在要怎样解决ie8这个session失效的问题呢?如何在ie8上也有ie6,ie7的效果呢?
找了些解决方法:
1:用户通过菜单 File > New session 打开新窗口,或者使用命令行参数 iexplore.exe -nomerge 来打开IE。
这样是基于浏览器解决,客户肯定是不懂的了,也不可能每个客户都去教。这很不现实。
2:SESSION key 不使用COOKIE传递 使用URL传递就可以做到
可以借鉴网易邮箱地址栏参数
url传递sessionid这个倒是可以一试,不过不知道具体应该如何做?
而且我发现,其实我们跳转的时候好像地址栏后面是会自动跟着sid=XXXXXXXXXXXXXXXXX的。
http://localhost:9091/hotel_manage/loginUser.htm;jsessionid=D9273B75DB10E9BA5D88B87A7ED04F29
请教各位,这第二种方案适用url传递如何做?
参考资料:
我们可以使用url转发的方式,在客户端cookie被禁用的时候,把服务器端发送过来的JSESSIONID用下面的方式保存在url里
http://localhost:8989/session1/session/testsession123.jsp;jsessionid=F1543A66EB5C7930D2CED3EFE3958BA1
注意这里的格式,中间有一个分号
有两种获得url转发的方法
方法1:
这个标签的作用是:把对应helloEncodeRul.jsp的页面,进行URL重写以后,把重写后的url放置到page中,这个时候,用"${pageScope.myurl }"就可以取到这个url重写后的url
<c:url var="urltest" scope="page" value="helloEncodeRul.jsp"></c:url>
<a href="${pageScope.myurl }">TestSession</a>
使用了整个标签以后,当前页面就会在第一次访问服务器的时候把服务器发送过来的JSESSIONID保存在url后面,用“;”分开,大概就是这个样子
;jsessionid=F1543A66EB5C7930D2CED3EFE3958BA1
方法2.
<a href="<%= response.encodeURL("testsession123.jsp") %>">TestSession</a><br>
一般情况下,推荐使用前一种方法。
当cookie被禁用以后,可以使用url重写的方式来获得客户端发送过来的JSESSIONID,整个时候整个JSESSIONID就会被保存在显示的拼接在url后面。
------解决方案--------------------ie8是有这样的问题哟,学习一下!
------解决方案--------------------jf..................
------解决方案--------------------应该不能。
------解决方案--------------------反正你通过网页、服务器代码是不行的。
如果只是为了测试两个IE session可以,
文件>新建会话,或者运行命令行
iexplore.exe -nomerge
参考
------解决方案--------------------不用session 用cookie
------解决方案--------------------
------解决方案-------------------- 围观。。。 学习。。。
------解决方案--------------------
------解决方案--------------------学习。。。。。
------解决方案--------------------不是和你说了,
------解决方案--------------------你那个需求,AFAIK,对于普通用户无解,包括IE6用户(普通人分不清进程的区别),而且也是senseless的
------解决方案--------------------ding ........
------解决方案--------------------