2010-12-22 74 views
4

在哪些情況下,我會在IE中收到頁面過期錯誤? (它似乎從來沒有在FF到澳鵬?)如何避免頁面過期?

和:

我試圖避免在下列情況下到期頁:

第1頁:使用後,輸出2頁。

第2頁:使用交但 ENCTYPE =多部分和輸出PAGE3

PAGE3:使用後,輸出第4頁。

page4:no form。

當我瀏覽每個頁面時,我可以使用除第4頁以外的每個頁面上的後退按鈕。在enctype = multipart表單的頁面之後,似乎不可能返回頁面?在這種情況下,我總是在第3頁上讓頁面過期。有人可以解釋爲什麼會出現這種情況,以及如何允許用戶通過每個頁面使用後退按鈕,而不管使用什麼方法(POST/GET)(如果甚至可能的話)?

我知道你可以通過執行PRG pattern來解決它,但這不是真正的選擇。

請注意,enctype = multipart的頁面必須具有type = file的輸入才能觸發此行爲。如果我刪除所有的文件輸入,我可以前後使用,沒有任何問題。

謝謝!

+0

爲什麼PRG不是一種選擇? – BalusC 2010-12-22 19:34:18

回答

1

這是不可能的。你最好的選擇是PRG。您可以在重定向之前存儲基於請求的感興趣數據,並在重定向之後從會話中刪除。爲了防止用戶在完全相同的時刻提交這些表單中的2個(非常罕見)的情況,請將其存儲在會話中的某個映射或關聯數組中,並沿着唯一的基於請求的鍵存儲它,並將該鍵作爲URL參數或pathinfo重定向URL,然後從會話中刪除與密鑰關聯的數據。

0

今天我遇到了同樣的問題。這似乎是IE中的一個錯誤,因爲它在Firefox和Chrome中運行得很好。像OP一樣,在我的情況下,使用PRG模式不是一種選擇。

我唯一能想到的方法是在第3頁的標記中添加target =「_ blank」,這會導致第4頁在新的瀏覽器窗口/選項卡中打開(從而使頁面3仍然在原始頁面中打開窗口/選項卡,以便它仍然可供用戶使用。)不幸的是,根據您的具體要求,這可能不是所有情況下可以接受的解決方案。