我正在开发一个Web应用程序(J2EE),我想知道可以从浏览器处理双重帖子的选项.
我过去看过和使用过的解决方案都是客户端的:
用户单击它后立即禁用提交按钮.
按照POST-Redirect-GET模式阻止用户单击后退按钮时的POST.
处理表单的onSubmit事件并使用JavaScript跟踪提交状态.
如果可能的话,我更愿意实现服务器端解决方案.有没有比我上面提到的更好的方法,或者客户端解决方案最好?
很难实施一个愚蠢的解决方案(因为他们总是改善白痴). 无论您做什么,客户端都可能被操纵或执行不正确.
您的解决方案必须是服务器端才能可靠和安全. 也就是说,一种方法是检查请求并检查系统/数据库状态或日志以确定它是否已被处理.理想情况下,如果可能的话,服务器端的进程应该是幂等的,并且如果不能,则必须防止欺骗提交.
你可以提供一个"票证"作为表格的一部分,一些随机数 - 并确保它不会被接受两次,在服务器端.