2010-10-18 69 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