Get (PRG) 模式

解決的問題

讓我們思考這樣一個常見的場景

  • Step 1: 用戶提交了一個表單
  • Step 2: 服務器返回了一個頁面
  • Step 3: 用戶刷新頁面
Post/Redirect/Get (PRG) 模式

問題產生: 此時表單將被重複提交

如果服務器沒有正確處理,將引起一些不必要的問題

注意:這裡說的提交表單不是用 ajax 異步請求把數據傳到服務器,而是原生的 HTML form 的 submit,不要混淆該模式的使用場景,否則會對該模式產生困惑

原生的表提交場景下,提交後展示的頁面是後端返回的提交結果頁面 !!!

解決途徑: Post/Redirect/Get (PRG)

服務器收到 form 提交的 Post 請求後,並不是直接返回一個 2XX 的結果頁面,而是返回一個 3XX 的重定向頁面 (Redirect),定向到正確的結果頁面 (Get)

Post/Redirect/Get (PRG) 模式


更多參考

  • 示例代碼:https://gist.github.com/ZhenningLang/342bf9d0ddfcf9a6d4ed9c10f97e8b7a
  • Wikipedia:https://en.wikipedia.org/wiki/Post/Redirect/Get


分享到:


相關文章: