防止双重请求处理

Prevent double request handling

本文关键字:请求处理      更新时间:2023-09-26

我正在与第三方支付服务,发送我的用户回到我的网站后,在他们的网站上做支付。它将用户发送回javascript (setTimeoutlocation='my_site.com?data'),但也有一个按钮,如果花费太长时间,用户可以点击。当浏览器已经因为javascript加载我的站点,并且用户点击按钮时,会发生双重请求。
我可以防止请求被处理两次吗?或者我应该简单地处理两次?

现在,当同一请求被处理两次时,我显示"请求已处理",但由于这两个请求几乎同时发生,用户永远不会看到显示请求已正确处理的页面。

理想情况下,该按钮应该在您的服务提供商处禁用,否则您必须在您的一侧优雅地管理它…

在这种情况下,您希望用户获得正确的反馈,并且从您所说的内容中可以意识到他们目前失去了对第一个请求的响应。

因此,您可能想要做的是对任何后续请求(可能仅在特定时间范围内)检查事件是否已经被处理。如果它已经被处理,你可能想要检查处理是一致的(即数据是相同的两次和适当的处理,如果数据实际上是不同的)。

如果它都是一样的,你可以显示"处理正确"的页面,无论是第一次,第二次还是第十次访问该页面。

处理这个问题的其他技巧可能包括确保你的登陆页面返回得更快。问题大概是你这边已经完成了相当数量的工作,导致他们也放弃了点击。如果您可以减少显示内容的时间,那么您的问题可能会以更好的方式解决。这可能包括返回一个小页面,上面有你的网站品牌,并说"请稍等,我们正在处理您的订单"或其他什么。这就把控制权放在了你的手中,并允许你在开始时更智能地处理双击场景。

在调用form.submit()之前禁用提交按钮:

document.getElementById("submit").disabled=true;