我有一个ASP.Net页面,其中包含一个按钮.此页面包含ServerSide Paypal按钮.
推送时,我的服务器在后端执行各种聪明的操作,然后将响应重写为表单和一些将此表单发布到paypal的javascript.
一切都很好.
但是,如果用户然后选择点击返回,他们将到达我生成的自我发布表单,并将其再次转发给Paypal.
我想如果我能找到一种方法让我生成的表单页面不存在于历史中,那么这将解决我的问题.但我不知道如何纠正这个问题.
如何从历史记录中删除我的页面,或者只是让它永远不会出现?
更新:感谢所有......这些是一些很好的答案.赞成所有好的,但由于巧妙地使用隐藏字段而不是cookie作为决策依据而使用splattne.
window.location.replace(URL);
window.location:
更换(URL)
将当前文档替换为提供的URL处的文档.与assign()方法的不同之处在于,在使用replace()之后,当前页面将不会保存在会话历史记录中,这意味着用户将无法使用"后退"按钮导航到该页面.
我不确定是否可以做到.但是这里有一个想法,你如何能够阻止重新提交表单.
您可以在表单中插入隐藏的输入,该输入在开头将为空.提交时,您将在该字段中写入一个值,并确保在此字段为空时检查每次提交尝试.
如果提交时它不是空的,则您知道该表单之前已发送过,您可以警告用户.
作为Web应用程序,您永远无法完全控制用户的浏览器.即使有一种方法可以指示浏览器不将页面存储在历史记录中,我怀疑,您无法确定它是否可行.例如,一个聪明的用户可以调整一个开源浏览器来存储历史中的每个页面,无论如何.
我认为你应该尝试从另一个角度来解决这个问题.例如,您可以检测到它是转发的相同形式,而不是第二次将其发送到PayPal.重要的是在服务器端做它.