我不想让用户多次单击相同的ajax按钮,但是我想要进行一些控制以防止有人恶意地反复点击按钮,这会导致重复的数据库请求。什么是在asp.net mvc中的jquery .post上处理这个的简单方法?如果我延迟时间,体验客户端将被破坏(?)
答案 0 :(得分:6)
为什么不在单击按钮后禁用该按钮,然后在收到服务器的响应后重新启用它?
答案 1 :(得分:3)
这不是客户端问题,只能在服务器端处理。如果正在进行AJAX请求,那么恶意用户可以直接通过HTTP将AJAX请求直接发送到您的服务器 - 即使对于使用WFtech或Curl之类的新手来说,这也是非常微不足道的。
不说明显,但如果用户可以多次点击一个按钮,那么对手也是如此,而且无法确定谁是谁。您可以进行某种限制以将其限制为每秒y次的x次点击等,但攻击者也可以限制其点击率。
答案 2 :(得分:2)
在javascript中设置一个指示待处理请求的标志,一旦响应到达,则取消设置标志。
这样用户可以按照自己的意愿多次点击按钮,只会向服务器发出一个“有效”请求。
答案 3 :(得分:2)
为什么不跟踪用户按下按钮的次数,每隔一秒或半秒,您运行方法提交查询以及点击次数(或不做任何事情,如果没有点击)。此外,在该方法中,将点击次数重置为0,以便下一个查询准确无误。
答案 4 :(得分:1)
在请求完成之前禁用该按钮?
答案 5 :(得分:1)
您可以将按钮放在计时器上,这样一旦按下,它将被禁用X秒或直到它收到服务器的响应。
答案 6 :(得分:1)
实际应用于任何帖子的方法是添加客户端生成的随机令牌。当服务器在第一次记录令牌时收到帖子时,随后会忽略带有相同令牌的任何后续请求。
上听到了这个消息