Post/Redirect/Get pattern | PRG 模式
2016-04-23 11:20
603 查看
Post/Redirect/Get 是一种 web 开发设计模式,用于防止表单的重复提交。
默认情况,提交 Post 请求到服务器后,如果直接刷新浏览器,会重新在提交一次 Post 请求。在访问电商网站时,提交订单采用的是 Post 请求,如果直接刷新浏览器就容易导致重复订单的提交,这个不是用户希望发生的行为。PRG 方法就是用户防止这种现象的发生。
参考资料:
Post/Redirect/Get, wikipedia
默认情况,提交 Post 请求到服务器后,如果直接刷新浏览器,会重新在提交一次 Post 请求。在访问电商网站时,提交订单采用的是 Post 请求,如果直接刷新浏览器就容易导致重复订单的提交,这个不是用户希望发生的行为。PRG 方法就是用户防止这种现象的发生。
默认情况:
下面例图描述了默认情况,服务器和浏览器处理 Post 请求的流程PRG 设计模式
下面例图描述了用 PRG 方法来避免 Post 请求的重复提交。当服务器处理完 Post 请求后,会发响应给用户浏览器,指示用户浏览器用 Get 方式立刻访问另一条 URL 。用户浏览器拿到 Get 请求的数据,整个流程才算结束。此时用户刷新当前页面,也不会引起 Post 请求的重复提交了。完善网页收藏功能
Post/Redirect/Get 方式除了能防止 Post 请求的重复提交外,还可以完善网页收藏功能。把 Post 请求直接返回的网页收藏到书签是无效的,因为这个网页的重现依赖于 Post 请求以及当时提前的数据。采用 PRG 方式,用户正常情况下收藏到的是重定向后 GET 方法返回的网页,这样使得收藏有效了。参考资料:
Post/Redirect/Get, wikipedia
相关文章推荐
- percona 实用工具之pt-kill使用介绍
- 信息安全之安全协议和认证服务
- 318. Maximum Product of Word Lengths
- as、as!、as?三种类型转换操作符使用详解
- Twisted源码分析2
- EhCache 分布式缓存/缓存集群
- Spring In Action
- GridBagLayout 布局精髓
- 自定义View-2-重写onMeasure
- 自定义View-1-动态添加view
- 机器学习------平台和语言选择
- Android前端人员与后台开发的撕逼(一)
- rsync常见错误总结
- POJ 1328 Radar Installation 题解
- 欢迎使用CSDN-markdown编辑器
- [从头学数学] 第191节 空间向量与立体几何
- jQuery Easing 使用方法及其图解
- 自定义View-序言-你需要的知识点
- 【.net深呼吸】非 Web 项目使用缓存
- IOS-HTTP协议