防止双重请求处理
Prevent double request handling
我正在与第三方支付服务,发送我的用户回到我的网站后,在他们的网站上做支付。它将用户发送回javascript (setTimeout
和location='my_site.com?data'
),但也有一个按钮,如果花费太长时间,用户可以点击。当浏览器已经因为javascript加载我的站点,并且用户点击按钮时,会发生双重请求。
我可以防止请求被处理两次吗?或者我应该简单地处理两次?
现在,当同一请求被处理两次时,我显示"请求已处理",但由于这两个请求几乎同时发生,用户永远不会看到显示请求已正确处理的页面。
理想情况下,该按钮应该在您的服务提供商处禁用,否则您必须在您的一侧优雅地管理它…
在这种情况下,您希望用户获得正确的反馈,并且从您所说的内容中可以意识到他们目前失去了对第一个请求的响应。
因此,您可能想要做的是对任何后续请求(可能仅在特定时间范围内)检查事件是否已经被处理。如果它已经被处理,你可能想要检查处理是一致的(即数据是相同的两次和适当的处理,如果数据实际上是不同的)。
如果它都是一样的,你可以显示"处理正确"的页面,无论是第一次,第二次还是第十次访问该页面。
处理这个问题的其他技巧可能包括确保你的登陆页面返回得更快。问题大概是你这边已经完成了相当数量的工作,导致他们也放弃了点击。如果您可以减少显示内容的时间,那么您的问题可能会以更好的方式解决。这可能包括返回一个小页面,上面有你的网站品牌,并说"请稍等,我们正在处理您的订单"或其他什么。这就把控制权放在了你的手中,并允许你在开始时更智能地处理双击场景。
在调用form.submit()
之前禁用提交按钮:
document.getElementById("submit").disabled=true;
- Javascript在for循环中等待处理请求
- 处理第三方库发送的ajax请求的开始和结束事件
- PHP处理来自一个页面的http请求,并将其显示在另一个页面上
- 需要帮助处理XML HTTP文件上载请求
- 如何在node+express中重新运行请求处理程序
- 使用异步模块的Express + Mongoose请求处理程序的更简洁的方法
- 开发模式下 Rails 3.2 的请求处理顺序
- 为延迟请求处理创建承诺链
- 如何将多个请求处理函数与 Node.js Express 一起使用
- 取消 ajax 请求:处理程序是否仍可执行
- 多个 jquery ajax 请求 - 处理它的方法
- NodeJS http请求处理程序
- 为什么我要声明handle["/"]在请求处理对象在HTTP服务器与node.js
- 防止双重请求处理
- 从Express中的POST请求处理程序下载文件
- 在Koa请求处理程序中触发下载
- 浏览器在执行“卸载”前发送http请求.处理程序
- 如何使用nodejs请求处理超时
- 使用请求/处理代码加载JS数组的更快方法
- Node.js请求处理程序不会调用函数