2008-11-14 186 views
15

我有一个ASP.Net页面,其中包含一个按钮。本页面包含一个ServerSide Paypal按钮。如何从浏览器历史记录中删除页面?

当把我的服务器确实在后端各种聪明的事情,然后重写响应的形式和一些JavaScript哪些职位这种形式的贝宝..

这一切的伟大工程。

但是,如果用户选择点击返回,他们将到达我生成的自我发布表单,然后再转发给PayPal。

我想如果我能找到一种方法让我生成的表单页面不存在于历史记录中,那么这将解决我的问题。但我不知道如何解决这个问题。

如何从历史记录中删除我的页面或者从未出现?

更新:感谢所有......这些都是一些很好的答案。 Upvoted所有好的,但与splattne去聪明的使用隐藏的领域,而不是曲奇作为决定的基础。

回答

6

我不确定这是否可以完成。但是,这是一个想法,你可以如何防止重新提交表单。

您可以在您的表单中插入一个隐藏输入,该表单在开始时将为空。在提交时,您将在该字段中写入一个值,并确保您检查每次提交尝试,如果此字段为空。

如果不是空上提交你知道的形式预先发送,你可以向用户发出警告。

5

作为一个Web应用程序,您永远不会完全控制用户的浏览器。即使有一种方法可以指示浏览器不在历史记录中存储页面,我怀疑它,但无法确定它会起作用。例如,一个聪明的用户可以调整一个开源浏览器来存储历史中的每一页,而不管它是什么。

我认为你应该尝试从另一个角度来处理问题。例如,您可以检测到它是与正在转发的表单相同的表单,而不是第二次将其发送到PayPal。重要的是做到服务器端。

+0

当用户从贝宝页面返回时,浏览器从它的缓存中检索生成的表单,并且再次自我发布。没有与服务器的进一步联系。所以我不明白我如何使用服务器来防止这种情况。 – 2008-11-14 13:41:41

+0

你是否建议我可以让自动生成的表单有一些条件逻辑,可以发布或执行另一个back()..它可以基于这个逻辑吗? – 2008-11-14 13:42:46

+0

我能说什么...... splattne在几秒钟内回答了我提出的问题:) – 2008-11-14 13:44:26

2

也许你可以在提交表单之前设置cookie。

加载页面时,检查是否存在该cookie(意味着表单已经提交)。如果找到,而不是自动提交表单,则会自动返回(window.history.back())。

19
window.location.replace(URL); 

window.location

替换(URL)

与 一个所提供网址替换当前文档。从分配()方法 区别是 ,使用更换后的()当前 页面不会被保存在会议 历史,这意味着用户将不能 能够使用后退按钮 导航。

2

我不知道,如果你能做到这一点很容易与贝宝的整合,但 "Post/Redirect/Get"模式可以用来解决这个问题

0

一些有用的提示可能是这...

window.history.go(-2); 

特别是在出现加载失败警告弹出窗口时。

0

如果window.referer是您尝试避免再次调用的PayPal页面,那么您可以简单地将您的页面设置为不要提交或执行某项操作/在其他地方导航。