Chrome在浏览器后退按钮上悄悄地重新提交表单

Chrome quietly resubmitting form in iframe on browser back button

本文关键字:新提交 提交 表单 悄悄地 浏览器 按钮 Chrome      更新时间:2023-09-26

在一个房地产网站上,我正在工作,我有一个联系我们表单在属性详细信息页面上,用户可以点击联系我们按钮,这将加载表单在一个模态对话框,一个iframe加载联系我们表单,填写一些详细信息,并发送它。

一旦表单被处理了服务器端,我必须从服务器发出JavaScript代码,调用dialog close方法,然后将用户重定向到一个感谢页面(如果我在服务器上做了一个简单的重定向,iframe会得到我不想要的感谢页面)。

这个问题是在Chrome中,如果你点击浏览器的后退按钮,联系人表单被悄悄地重新提交。

注意:IE和Firefox根本没有这个问题。

我发现下面的链接很有用,但不是我问题的答案:

  • https://productforums.google.com/forum/!主题/铬/J1KMARIIHW4
  • https://code.google.com/p/chromium/issues/detail?id=263508(这个似乎非常接近我所看到的行为-但它似乎是一个在过去几年中不断重新出现的错误)
  • Chrome在浏览器返回按钮上再次执行所有JS

我们已经尝试了各种技术来规避Chrome中的问题,如隐藏字段,保险缓存被关闭,在重定向到感谢页面之前破坏iframe。什么都没有,它会一直重新提交表单,甚至不问你是否想要重新提交(其实根本不应该重新提交)

刚刚遇到这个问题,我想做的是在表单中包含某种一次性令牌(即GUID),如果我们在服务器上重新检测,我们可以忽略表单帖子。可能使用服务器上的会话状态来保持跟踪-很像Rails的真实性令牌