2013-12-19 42 views
0

在我們的網站上,我們有一個用戶使用GET請求訪問的表單,其中包含一些URL參數。用戶將表單提交發送到確認頁面的相同URL(減去URL參數),然後關閉瀏覽器(特別是在iPhone上)。什麼HTTP標頭會告訴瀏覽器不要在由POST導致的頁面上恢復會話?

用戶下次打開他們的瀏覽器時,他們返回到他們發佈表單的頁面......基本上是一個GET請求減去所需的表單參數。所以這返回一個錯誤頁面。

我們能夠在iPhone,以及Firefox等桌面瀏覽器上重現此錯誤,但恢復以前的會話。

我們可以發送哪些HTTP標頭,告訴網絡瀏覽器不要返回到確認頁面的URL?

+1

您需要Post-Redirect獲取 – artbristol

+0

@artbristol確認頁是動態的,因此該模式不適用。 – Rob

回答

1

如果您的POST出現在瀏覽器的歷史記錄中,那麼稍後它可以用於導航。您應該考慮使用JavaScript執行POST並防止DOM導航到包含POST結果的新頁面的默認行爲。下面是使用jQuery一個小例子:

$("form").submit(function (e) { 
    e.preventDefault(); 

    // Use $.post here to post the results without causing a browser navigation 
}); 

據我所知,有沒有HTTP標頭可以操縱瀏覽器的歷史。

0

你能不能將用戶重定向到另一個頁面,如果沒有POST或使用GET瓦爾:記住

if (!isset($_POST['variableFromForm']) && !isset($_GET['variableFromUrl']){ 
    header('Location: anotherUrlPerhapsHomepage.php'); 
} 

軸承已發送任何輸出之前頭必須調用。即儘可能接近腳本的頂部是最安全的

+0

是的,我可以做到這一點。但我寧願檢測頁面何時加載錯誤,又沒有瀏覽器返回該頁面。 – Rob

+0

我會說你唯一的選擇就是去做Nathan上面說的。如果您已經將用戶發送到該頁面,則不能保證他們不會退回,除非您將其重定向。 – gb056

相關問題