一个IE问题,高分请救,大侠快进 要求在用户关闭IE浏览器的时候要把用户的session清除?用户在关闭IE浏览器时session会自动清除啊,不用自己写代码,不信可以关闭之后再打开IE,看session还在不在。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的意思应该是将客户的cookies清楚吧,如果是把Session清除的话,正如楼上所说,它们是自动清除的。 但服务器端的不会被清除吧(直到服务器端超时才失效)之所以再打开IE后不行是因为产生了新的session,所以当然不行,若能模拟出旧的session(直接操作底层http协议或TCP/IP)一样可行的 正如楼上所说,我的session不是用客户端的cookies实现的,事实上我在servlet中已经禁用了cookies。session的机制是通过客户端的URL重写实现的,所以用户的sessionID是一直暴露在IE的地址栏处,如果用户关闭IE的时候不把服务器端的用户sessionID清除掉,只要用户下次登陆的时候,直接模拟出上次的URL,就可以免去用户人证的过程了,很不安全的。 如你所说的 onUnload,在里面加上判断 window.closed 看看 window.closed 好像不行,无论是关闭IE还是刷新返回都是false代码如下:<html><body onUnload="alert(window.closed);return true;"></body></html> 打开一个IE时,服务器端自动为该客户端建立一个sessionid,对应每个请求该客户端(一个IE)都使用的这个sessionid,直到这个IE关闭或logout(在程序中将该session清除)。如果你在服务器端的action设置好的话,客户端根本没办法看到这个sessionid的,就算sessionid得到了,因服务器中已将原sessionid清除,所以也不会产生作用。 不是把,若在服务端没有显示的调用session.invalidate()服务器为该用户分配的session是不会清除的,除非超时。session的超时一般都定在30分钟左右,换句话说,如果用户关闭窗口,而服务器端没有调用session.invalidate(),那么用户的数据在超时之前将一直有效,一旦在这期间某个用户窃取了原先用户的sessionid,这它便可以冒充原来的用户访问它的信息了 可以考虑这样一个解决方案:在客户端关闭浏览器的时候,调用服务器的登出操作,使服务器端的session失效,客户端的session是随着浏览器关闭自动失效的具体可以在javascript里调用一个url或form post 怎么知道客户端关闭浏览器?用onUnload事件吗,它区分不了刷新还是关闭啊! 如果使用java的话,我可以建议你使用SessionTimeoutNotifier我就是这样做的。。你可以参看相关的文档,java的帮助都有。 [求达人]为什么我的JTable不显示单头(就是列名) 有图有真相 关于String源代码的问题 为什么我的JBuilder当使用集合的时候总是提示错误 用java编写类似tree命令的程序 SWT打包运行问题 远程信息可视化 如果每次读取JTextArea里的一行,然后写入文件? applet中这样创建控件有什么区别 java 里short i = -1 右移10位后怎么是-1 接口方法征名 请教高手:有没有人见过这个异常,关于数据库访问。送分! 用applet画图在客户端不能正常显示的问题
代码如下:
<html>
<body onUnload="alert(window.closed);return true;">
</body>
</html>
在客户端关闭浏览器的时候,调用服务器的登出操作,使服务器端的session失效,客户端的session是随着浏览器关闭自动失效的
具体可以在javascript里调用一个url或form post
我就是这样做的。。你可以参看相关的文档,java的帮助都有。