2010-10-18 71 views
0

我有一个父窗口,从中打开按钮单击的模式对话框。在使用IE8的WinXP中,它工作得很好,但在IE8的Win7中,打开模式对话框后,它会将我带到登录屏幕。如果我输入我的凭证,请关闭对话框并再次打开它,它会起作用。窗口和模态对话框之间的会话传输

我想到的解释是会话没有在父母和子女之间转移。 使用javascript window.open函数打开模式。

我不想将凭证存储在cookie中,然后在我的模式中读取它,因为这是一个安全禁止。有没有解释为什么这是发生在Win7中,而不是在XP中,并有解决这个问题?

+0

从另一个站点/域打开模式窗口吗? – leppie 2010-10-18 08:06:05

+0

不......这是一个托管在服务器,同一站点,同一域,同一服务器上的Web应用程序。 – GxG 2010-10-18 08:20:56

回答

1

会话驻留在服务器上,所以只要浏览器将模式对话框看作同一个站点(服务器等),它就会向服务器标识自己,然后它将提取会话详细信息。也许你在某个地方禁用了Cookie。

为什么不在两个屏幕上打印会话值?第一次打开模态对话框时是否为空?

我的猜测是这是在模态对话框中用if(IsPostPostBack)做的事情。除此之外,如果你可以发布一些代码,我一定会看看。

+0

感谢您的帮助,但我实际上已经想通了......似乎在Win Vista及更高版本中,window.open实际上会打开一个新进程并且不会继承父级的SessionID。所以解决方案将使用showModalDialog或showModelessDialog。无论哪种方式为web应用程序,使用window.open不是一个好主意。 – GxG 2010-10-18 10:50:12

+0

啊,所以我当时就发现了:-)“,只要浏览器将模式对话框看作是同一个站点(服务器等),它就会向服务器标识自己”显然,它并没有将正确的cookies发回给服务器。很高兴你修好了它。 – 2010-10-18 11:06:34

+0

谢谢...每日提示:不要使用window.open,除非它指向与您的应用程序无关的网站 – GxG 2010-10-18 11:30:55