打开一个新窗口创建一个新会话

时间:2011-12-12 09:44:09

标签: javascript session asp-classic internet-explorer-6 internet-explorer-9

我们正在将基于Web的软件从带有Internet Explorer 6的Windows XP升级到带有Internet Explorer 9的Windows 7。

此外,在WPF应用程序中使用了一个webbrowser对象。

我们现在有一个奇怪的行为,当打开一个带有url的窗口(使用window.open(url)这样的指令)时,ASP会话“丢失”,新窗口使用新的从头开始会话。< / p>

我通过避免无用的窗口打开解决了这个问题,而是修改了当前窗口的位置。但我想了解为什么会出现这种行为!

你有任何线索吗?

谢谢。

4 个答案:

答案 0 :(得分:3)

这可能是由于您的域名有所不同,如果您在www.yoursite.com上运行但窗口指向yoursite.com,则会创建一个新会话。一个讨厌的人,所以要注意它。

此外,您可能会在页面中的某个位置浮动一些调试代码,这可能会导致很多人头疼,清除会话变量以进行测试。还有其他需要检查的东西,但是你永远都不知道。

答案 1 :(得分:2)

假设您的导航全部转到同一个域,那么另一个原因可能是切换进程。从IE8开始,IE“chrome”和标签内容分为两个过程。 IE可以为不同的窗口和标签中的内容创建多个内容流程。

如果您的应用程序托管了一个web浏览器控件,然后启动一个完整的IE窗口,则可能是您的新URL正在被另一个进程(iexpore.exe)请求,而不是您的应用程序进程。因此,请求无法访问会话cookie,因此会话显示为“丢失”。

(值得注意的是,同一进程树中的多个iexplore.exe进程实例具有相互共享会话cookie的方法。)

答案 2 :(得分:1)

我认为您可能遇到this answer解决的问题。基本上,这可能是由于您正在使用的特定计算机上的IE中的安全区错误。正如其他人已经注意到的那样,我可以重申,只要域名没有变化,会话就被带入javascript打开的其他IE(6,7,8,9)窗口。

祝你好运!

答案 3 :(得分:0)

一些可以帮助您的参考资料:

当您使用javascript作为默认IE打开一个新窗口时,创建一个新窗口,以及不同的会话和历史记录。如果您从javascript新窗口获得最后一个引荐来源,它将在主要浏览器中显示为空。

如果在锚点对象中触发了window.open函数,则可以保留会话历史记录:

<script>
function windowOpen() { window.open("my_page.asp","_blank"); };
</script>
<a href="javascript:windowOpen();">my link</a>