【发布时间】:2011-11-18 08:56:36
【问题描述】:
我有以下场景:
第一个网页有一个提交给服务器的表单。 服务器响应第二页。 第二个页面有一个隐藏的表单,在表单加载时使用 javascript 提交,它将用户重定向到外部站点。
我的问题是: 用户是否可以在第一页上两次提交第二个表单(在第一页的一个页面视图内)?
这个问题与这在实践中如何运作有关,我不需要替代方案。
【问题讨论】:
标签: javascript browser double-submit-prevention
我有以下场景:
第一个网页有一个提交给服务器的表单。 服务器响应第二页。 第二个页面有一个隐藏的表单,在表单加载时使用 javascript 提交,它将用户重定向到外部站点。
我的问题是: 用户是否可以在第一页上两次提交第二个表单(在第一页的一个页面视图内)?
这个问题与这在实践中如何运作有关,我不需要替代方案。
【问题讨论】:
标签: javascript browser double-submit-prevention
我会忽略不应该将实践用作生产解决方案的事实。
如果用户浏览器没有执行第二个表单的 onLoad() javascript 事件,您的要求就不会发生。
与任何这样的解决方案一样,当两个事件几乎同时发生时,您永远无法 100% 确定客户端浏览器的行为,但我会说在大多数情况下,浏览器不会执行两次 onLoad() 事件。
您需要注意的是浏览器的后退按钮行为。这肯定会导致重新提交。
【讨论】:
不,即使第一个表单被重复提交,第二个表单也只会加载一次。
【讨论】:
第二个表单不可能发送两次。因为重定向到另一个页面,所有内容都是从头开始加载的。
我不确定您解决问题的方法是否正确,尽管您不是在问这个问题,但请记住,用户可以使用 cmd/ctr 按钮多次单击按钮并使用表单多次打开新页面新标签。在这种情况下,您的表单将多次提交。
【讨论】: