解决的问题
让我们思考这样一个常见的场景
- Step 1: 用户提交了一个表单
- Step 2: 服务器返回了一个页面
- Step 3: 用户刷新页面
问题产生: 此时表单将被重复提交
如果服务器没有正确处理,将引起一些不必要的问题
注意:这里说的提交表单不是用 ajax 异步请求把数据传到服务器,而是原生的 HTML form 的 submit,不要混淆该模式的使用场景,否则会对该模式产生困惑
原生的表提交场景下,提交后展示的页面是后端返回的提交结果页面 !!!
解决途径: Post/Redirect/Get (PRG)
服务器收到 form 提交的 Post 请求后,并不是直接返回一个 2XX 的结果页面,而是返回一个 3XX 的重定向页面 (Redirect),定向到正确的结果页面 (Get)
更多参考
- 示例代码:https://gist.github.com/ZhenningLang/342bf9d0ddfcf9a6d4ed9c10f97e8b7a
- Wikipedia:https://en.wikipedia.org/wiki/Post/Redirect/Get
閱讀更多 CrazyPython 的文章