我做了调查,找到了这个页面:
How do I stop the Back and Refresh buttons from resubmitting my form?
我希望我可以避免使用Post-Redirect-Get模式,而是在第一次提交表单时对表单进行一些变量更改。然而,我不知道如何做到这一点,因为当你点击刷新时,你的想法是你重新提交了你刚刚提交的表单。有什么建议吗?
发布于 2011-08-25 23:34:00
这通常通过POST请求后的重定向来处理。单击back将再次将用户重定向到别处。我知道你提到过你想避免这种情况,但我看不出有任何合理的理由。
发布于 2011-08-26 16:10:54
当浏览器被告知要刷新时,它会重新发送它发送的最后一个请求。如果发送的最后一个请求是表单提交,则将重新提交该表单。这是没有办法的,因为这就是模型的工作方式。
要防止意外影响,您必须执行以下任一操作:
我不知道有没有其他选择,而且,考虑到“刷新”的工作方式,我真的看不出还有什么其他选择。在这两种选择中,post-redirect-get提供了最干净的用户体验,并且在理论上是HTTP动词最“纯粹”的使用,因此它通常是首选的,而且是正确的解决方案。
发布于 2011-08-25 23:49:45
在隐藏字段中随表单发送唯一的表单标识符,如UUID。跟踪您已经看到的UUID(可能是每个会话,这样您的数据库就不会无限制地增长或需要偶尔修剪),并默默地忽略重新提交。
https://stackoverflow.com/questions/7193113
复制相似问题