2010-07-22 76 views

回答

1

总之,你不能。你不能容忍用户的浏览器人质,如果你可以做你想做的事情(例如,在页面退出时重定向),这就是漏洞利用。 AJAX是您服务器端调用的唯一选项,正如您所述,这也是不可靠的。

+0

我不想隐藏浏览器......但这很容易:只需在OnBeforeUnload事件之后触发警报,确认或重定向。我已经在我的机器上完成了Firefox/IE 7 但是我不想这么做......我只是想作为最后一个动作向服务器发送一个标志来终止会话。每个会话超过7 MB,如果用户关闭浏览器,它必须被释放。 – 2010-07-22 12:42:25

+0

如果浏览器崩溃怎么办?如果互联网连接断开怎么办?如果JS首先未启用,该怎么办?忘记试图检测用户何时离开。只需定期清理不活动的会话。 – Quentin 2010-07-22 13:08:38

+0

@Lynx - 您联系服务器的两种方法是重定向到那里和AJAX(您现在不能从新元素创建GET请求)。每个平台都会超时,几乎所有的平台都提供了一个清理机制(ASP.Net没有什么不同,默认情况下是20分钟)。坚持服务器端清理,有一个原因*每个人*这样做...你不觉得如果这是可能的,它会完成吗?此外,会话对于浏览器窗口并不是唯一的,它在标签页之间共享,如果我打开另一个标签页会怎么样?这种方法也会杀死该标签。 – 2010-07-22 13:45:45

1

我不知道在“onBeforeUnload”期间是否可以这样做,但也许可以尝试。
注入图像您的网页,如:

<img src="yourscript?param1=value1&param2=value2" /> 

从服务器端只返回一个空的图像。

0

您可能需要挂接同步调用而不是AsynchronousJAX。

相关问题