gpt4 book ai didi

javascript - Ajax 和 JavaScript |限制用户触发的请求

转载 作者:搜寻专家 更新时间:2023-10-31 20:35:03 24 4
gpt4 key购买 nike

我目前正在研究一些 Ajax 代码。我想出了这个场景来尝试反射(reflect)我的问题,看看各位专家能否提出解决方案,谢谢。

场景:

我有一个像这样的 HTML 按钮:<p onclick="ajax_call();">Click</p> .单击此按钮后,它将向 php 页面发起 AJAX 请求,如下所示:

function ajax_launch(){
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = ajax_launch_callback;

xmlhttp.open("POST", "/php_script", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send();
}

function ajax_launch_callback(){
if(xmlhttp.readyState==4 && xmlhttp.status==200){
// code to do something once response is here successfulyl
}
}

然后这会在 php_script 中执行一些 PHP 代码文件并返回 $output

问题:

php_script通过 AJAX 调用的页面非常繁重,并且会进行多次 API 和数据库调用,从而使页面加载“缓慢”(这很好)。然而目前,当页面正在等待响应(它仍在执行 php 并且尚未返回任何内容)时,用户可以在技术上向按钮发送垃圾邮件以启动许多 ajax 调用。理想情况下,这只会对服务器产生压力,我需要一种方法,一旦请求挂起且未返回,您就无法发出进一步的请求。

我怎样才能实现这样的目标?

在此先感谢,期待您的解决方案/咨询

另外:

通过多个请求,这就是我的意思 - 看到当我点击按钮启动多个请求时垃圾邮件的图片,而第一个请求尚未完成(尚未返回任何内容):

Image of chrome debugger (networks tab)

最佳答案

尽管此处和链接问题中提到的 javascript 解决方案是一个很好的补充,但您确实应该在服务器端执行此操作,因为垃圾邮件发送者不一定使用浏览器和/或可能禁用 javascript。

如果您在服务器上使用 session ,则在处理请求时 session 将被锁定,因此您一次只能为每个用户处理一个请求。但是,请求可能会排队(这可能是您的网络选项卡数据中显示的内容?)因此您可以通过对 IP 地址等进行速率限制来补充这一点。

关于javascript - Ajax 和 JavaScript |限制用户触发的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37945339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com