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


分享到:


相關文章: