Javascript 检查请求是否来自web而非手动
我在js中有一个简单的自动完成脚本,它接受用户类型,将其发送到服务器,服务器检查与之相似的数据。工作得很好Javascript 检查请求是否来自web而非手动,javascript,ruby-on-rails,api,request,Javascript,Ruby On Rails,Api,Request,我在js中有一个简单的自动完成脚本,它接受用户类型,将其发送到服务器,服务器检查与之相似的数据。工作得很好 $(".name_autocomplete").autocomplete({ serviceUrl: '/names', onSelect: function (suggestion) { $(this).value = suggestion; } }); 但由于该服务器端点是公共的,我不希望用户滥用它,并让
$(".name_autocomplete").autocomplete({
serviceUrl: '/names',
onSelect: function (suggestion) {
$(this).value = suggestion;
}
});
但由于该服务器端点是公共的,我不希望用户滥用它,并让它通过bruteforce吐出所有内容
在客户端或服务器端是否有办法限制对该url的请求仅来自该特定页面上的网站,而不是来自诸如curl之类的内容?最简单的选择是在没有用户代理字符串的情况下断开连接,与属于已知bot的用户代理字符串类似。当然,如果您的用户足够聪明,可以使用curl,那么他们可能知道如何使用一个假的用户代理。默认情况下,curl不会发送用户代理字符串,因此这只会阻碍随意的好管闲事者 对于nginx:
if ($http_user_agent ~ (agent1|agent2) ) {
return 444;
}
也许HTTP访问控制可以帮助您与设置良好的用户代理结合使用: 您可以控制源域并决定允许访问哪个域,不允许访问哪个域