2008-11-14 185 views
15

我有一個ASP.Net頁面,其中包含一個按鈕。本頁面包含一個ServerSide Paypal按鈕。如何從瀏覽器歷史記錄中刪除頁面?

當把我的服務器確實在後端各種聰明的事情,然後重寫響應的形式和一些JavaScript哪些職位這種形式的貝寶..

這一切的偉大工程。

但是,如果用戶選擇點擊返回,他們將到達我生成的自我發佈表單,然後再轉發給PayPal。

我想如果我能找到一種方法讓我生成的表單頁面不存在於歷史記錄中,那麼這將解決我的問題。但我不知道如何解決這個問題。

如何從歷史記錄中刪除我的頁面或者從未出現?

更新:感謝所有......這些都是一些很好的答案。 Upvoted所有好的,但與splattne去聰明的使用隱藏的領域,而不是曲奇作爲決定的基礎。

回答

6

我不確定這是否可以完成。但是,這是一個想法,你可以如何防止重新提交表單。

您可以在您的表單中插入一個隱藏輸入,該表單在開始時將爲空。在提交時,您將在該字段中寫入一個值,並確保您檢查每次提交嘗試,如果此字段爲空。

如果不是空上提交你知道的形式預先發送,你可以向用戶發出警告。

5

作爲一個Web應用程序,您永遠不會完全控制用戶的瀏覽器。即使有一種方法可以指示瀏覽器不在歷史記錄中存儲頁面,我懷疑它,但無法確定它會起作用。例如,一個聰明的用戶可以調整一個開源瀏覽器來存儲歷史中的每一頁,而不管它是什麼。

我認爲你應該嘗試從另一個角度來處理問題。例如,您可以檢測到它是與正在轉發的表單相同的表單,而不是第二次將其發送到PayPal。重要的是做到服務器端。

+0

當用戶從貝寶頁面返回時,瀏覽器從它的緩存中檢索生成的表單,並且再次自我發佈。沒有與服務器的進一步聯繫。所以我不明白我如何使用服務器來防止這種情況。 – 2008-11-14 13:41:41

+0

你是否建議我可以讓自動生成的表單有一些條件邏輯,可以發佈或執行另一個back()..它可以基於這個邏輯嗎? – 2008-11-14 13:42:46

+0

我能說什麼...... splattne在幾秒鐘內回答了我提出的問題:) – 2008-11-14 13:44:26

2

也許你可以在提交表單之前設置cookie。

加載頁面時,檢查是否存在該cookie(意味着表單已經提交)。如果找到,而不是自動提交表單,則會自動返回(window.history.back())。

19
window.location.replace(URL); 

window.location

替換(URL)

與 一個所提供網址替換當前文檔。從分配()方法 區別是 ,使用更換後的()當前 頁面不會被保存在會議 歷史,這意味着用戶將不能 能夠使用後退按鈕 導航。

2

我不知道,如果你能做到這一點很容易與貝寶的整合,但 "Post/Redirect/Get"模式可以用來解決這個問題

0

一些有用的提示可能是這...

window.history.go(-2); 

特別是在出現加載失敗警告彈出窗口時。

0

如果window.referer是您嘗試避免再次調用的PayPal頁面,那麼您可以簡單地將您的頁面設置爲不要提交或執行某項操作/在其他地方導航。