欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

十分钟内学会 避免用户刷新导致重复POST提交

程序员文章站 2022-12-18 17:15:04
question 在web应用中,采用post提交信息是非常常见的,然而如果目标页面打开得太慢,用户就可能会刷新页面,这时候之前已经提交过的信息就会被重复提交。即使用户成功...
question
在web应用中,采用post提交信息是非常常见的,然而如果目标页面打开得太慢,用户就可能会刷新页面,这时候之前已经提交过的信息就会被重复提交。即使用户成功打开了post提交目标页,之后他通过链接导航到别处了,再退回到post提交目标页时仍可能会重复提交页面(例如因为浏览器缓存已失效)。而且,只要碰到重复post提交的场景,浏览器就会问用户是否确认重做此操作,用户并不一定能正确理解重做意味着重做什么,浏览器又不允许网站向用户解释清楚,所以这属于非常不友善的设计。那么我们应该如何避免用户刷新带来的重复提交呢?

answer
有一种最简单的模式能够解决这个问题,叫做prg,也就是post-redirect-get。在用户提交信息后,我们不要在post提交的目标url返回结果页面,而返回一个302将浏览器重定向到真正的结果显示页,然后浏览器通过get去获取那个页面。

这样做的话,用户刷新结果页,或者通过历史记录回到该页面,都不会导致浏览器要重新进行post,自然也就不会出现烦人的是否重做对话框了。而对于你来说,也有效避免了用户重复提交信息的可能性。