我理解这个问题是一遍又一遍地问,但我想要一种方法来处理服务器端的后退按钮点击(如银行应用程序)。
当用户点击后退按钮时,该页面应该无效,并且应该要求用户重新开始。
你能指导我一些关于这方面的教程吗?
答案 0 :(得分:1)
我看到这个解决的最简单的方法如下。
每个页面都配有唯一的ID /令牌。 提交任何表单时始终提交该唯一ID,并在服务器上将其作为“已使用”进行跟踪。
如果用户点击“返回”并重新提交相同的表单,服务器会检查唯一ID ...通知它是重复的,然后忽略提交。
请注意,这不会实际阻止用户“退回”,但如果最后一次操作是“转移$ 1,000,000美元!” - 用户不会意外传输200万。
答案 1 :(得分:0)
答案 2 :(得分:0)
指示页面不使用缓存。 添加到页面的head元素
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
答案 3 :(得分:0)
这里有两个问题需要解决。
首先是浏览器通常如何处理后退按钮。您应该使用POST请求来访问后退按钮无法访问的页面。大多数浏览器都会为GET请求使用本地缓存,所以如果你进行GET,根本就不会访问你的服务器。但是,POST请求通常会执行新请求。许多浏览器也会警告用户,并显示一个对话框,说“你确定要再次发送表单吗?”。因此,通过使用POST,您可以增加该页面的每个页面加载对服务器执行新请求的可能性。
您也可以使用GET请求,其中您的服务器返回HTTP标头,使浏览器无法从缓存加载页面。试验一下。
第二个问题是确保使服务器端的重复请求无效。我能想到的第一个解决方案是生成一个使用表单提交的令牌,并在每个请求中存储在数据库中。如果使用已存储的令牌执行请求,则可以使请求无效。也许有更好的技巧,但我会把它作为读者的练习;)
答案 4 :(得分:0)
我也搜索了这个,毕竟我发现了一个小技巧,我认为它可能适合你。