我做了我的研究并找到了这个页面:
How do I stop the Back and Refresh buttons from resubmitting my form?
我希望如果我可以避免使用Post-Redirect-Get模式,而是在第一次提交时在表单中进行一些变量更改。但是,我不知道如何做到这一点,因为当你点击刷新时,想法是你要重新提交你刚才提交的表格。有什么建议吗?
答案 0 :(得分:3)
这通常在POST请求后通过重定向处理。单击后退将仅重定向用户。我知道你提到你想避免这种情况,但我看不出任何正当理由。
答案 1 :(得分:2)
当告知浏览器刷新时,它会重新发送它发送的最后一个请求。如果发送的最后一个请求是表单提交,则表单将重新提交。没有办法解决这个问题,因为这只是模型的运作方式。
为防止出现不良后果,您必须:
我不知道任何其他选项,并且考虑到“刷新”的工作方式,我真的不知道怎么会有其他的。在这两个选项中,post-redirect-get提供了最干净的用户体验,并且是理论上“纯粹”使用HTTP动词,所以它通常是首选的,IMO是正确的解决方案。
答案 2 :(得分:1)
在隐藏字段中发送带有表单的唯一表单标识符,例如UUID。跟踪您已经看过的UUID(可能是每个会话,因此您的数据库不会无限制地增长或需要偶尔修剪)并默默地忽略重新提交。