2011-02-17 71 views
0

我正在使用PHP進行工作。 我有3頁, A是純HTML,幷包含一個搜索字段。 B是.php並返回搜索結果。 C也是PHP,並允許用戶更新顯示結果的一些細節。爲Mozilla獲取發佈數據

當我在做我的刷新B頁數或去回從C到後來我 得到這個消息

「要顯示此頁面,火狐必須 發送將重複任何 行動信息(如早些時候執行 的搜索或訂單 確認)。「

我看到「當我使用」 POST「的方法,然後我得到這個消息,如果我使用GET然後 我不知道。

任何哥們解釋我,爲什麼? ??

回答

2

狂放的猜測, POST不寫入URL,所以你需要重新發送它,而GET,當你點擊返回到B,參數仍然在URL中,所以你不需要重新發送。

Mozilla添加此信息以警告您發送信息兩次。 與註冊形式一樣,您不想註冊兩次。

+1

註冊僅僅是一個例子。如果任何金融交易因刷新頁面而不必要地重複,則可能出現更多問題。 – Trivikram 2011-02-17 08:54:04

3

GET方法應被用來獲得從網頁信息。

POST方法應被用來發送信息到一個網頁。

它要求您確認是否要再次發送信息的原因是,如果用戶回退,並不總是重新發布表單。例如,在網上商店,您不希望重新發布表單來購買兩次產品,否則您可能會爲該產品收取兩次費用。這是理所當然的,因爲做網上商店的人應該確保意外購買不會發生。

此外,如果您使用GET,則所有信息將附加到PHP頁面的URL。這是一個潛在的安全問題,特別是如果表單內容是私人的。對於這樣的表單,你應該使用POST。

1

Firefox開發人員添加了POST方法的警告。它也會在後退/前進的情況下提醒你POST。

這是用戶的附加保障。因爲,大多數購物車/銀行門戶網站使用POST方法進行結帳/交易確認(實際上我沒有看到或開發任何Web應用程序來使用get方法來實現此目的)。因此,在這種情況下(當您間接發送POST請求時,即使用後退/前進/刷新按鈕),Firefox(和大多數其他常見瀏覽器)會警告您。這可以防止用戶多次結帳。

添加此警告的另一個原因是,有時chekout非常耗時。因此,在原始提交後過了一段時間後,一些不耐煩的用戶認爲瀏覽器/服務器已停止工作。所以,他們傾向於按下刷新按鈕。這個警告給了他們一個很好的提示。

+0

Mozilaa觀點...不錯答案+1 – 2011-02-17 08:42:53

0

我認爲關鍵在於GET請求應該用於獲取信息而不用更改服務器上的任何內容,因此如果重新加載相同的信息,則不存在任何問題。 POST請求應該用於更改服務器上的數據,以便在重新加載可能會產生不良影響的頁面時使用。

-2

當您使用POST方法提交數據時,它會向您提交的頁面發送標題。刷新頁面或返回時,瀏覽器會重複POST請求,Firefox會提醒您。

+0

* GET方法不發送頭文件*什麼?這是不正確的。 – alex 2013-07-04 01:52:27

0

Firefox通常應該允許您從C頁面導航回您的B頁面。但是,如果您的B頁面不在緩存中,可能是因爲它發送了Cache-control:no-store標題,那麼您將收到POSTDATA警告。

另一方面,顯式重新加載頁面B將始終生成POSTDATA警告。