session may be lost when use window.open to open a new window

在页面代码中使用window.open方法打开一个新页面,在新页面中有可能发生session丢失的现象。究其原因,是因为使用window.open方法将打开另外一个IE 的进程,因此session的丢失就不足为奇了。

在好多应用中(例如用户在登录页面验证成功后转向一个新的页面),我们必须使用window.open方法来打开一个新的页面,来屏蔽浏览器的toolbar,menubar什么的。所以我们需要使用一种变通的方法,让我们既能够使用window.open方法,同时在打开来的新页面中能够使用session,这时我们可以考虑使用application这个存储应用全局变量的容器。

对于本例(例如用户在登录页面验证成功后转向一个新的页面),我们可以在登录页面验证成功后,把系统需要使用的session保存在Application中,同时对key 和 session的值进行加密(如果对安全没有什么要求的话就不需加密),在window.open方法打开的新页面中,获取存储在Application中的变量拿出来,解密后重新赋予到session中,这样就不会出现session丢失的现象了,同时要注意把些变量从Application中remove掉,要不然会累积N多相同的变量保存在内存中的。

尽管如此,我们最好不要使用javascript脚本来重定向页面,以避免出现一系列不可预测的问题。
posted @ 2008-05-16 14:27  Async Liu  阅读(413)  评论(0编辑  收藏  举报