我在做网络开发.
我有一个与信用卡有关的页面,当用户点击"刷新"或"返回"时,交易将再次执行,这是不需要的.
这包括浏览器左上角的"后退"和"刷新"按钮,"右键单击 - >刷新/返回",按"F5"键.这只能在某些cgi页面上完成,而不是全部.
可以使用Javascript完成吗?还是其他方法?
该标准的方法是做它在3个步骤.
表单页面将字段提交到处理页面
处理页面处理数据并重定向到结果页面
结果页面只显示结果,重新加载它不会造成任何伤害.
这打破了基本的浏览器用户体验模型......用户应该始终能够在浏览器中使用"刷新"和"返回"按钮.建议您以其他方式修复页面.
如果您更新问题以包含您正在使用的服务器语言/平台/技术,那么有人可能会建议解决方案.
重新提交表单生成重复事务的简单事实令人担忧.您应该进行某种检查以确保每次提交表单数据都是唯一的.
例如,提交表单的页面应该被赋予一个随表单提交的唯一ID.然后,业务逻辑应该能够识别提交的表单已经被处理(因为(不再)唯一ID将是相同的),因此忽略第二次尝试.
"标准方式"仍然不会阻止客户端点击两次后退按钮...甚至如果他们不认为(无论出于何种原因)已经处理过,则返回并重新提交表单.
生成随机字符串并将其存储在会话中,
然后将其作为隐藏值输出到您的表单,
检查提交和存储变量,如果匹配处理您的请求,
去1.