检查请求是否来自网络而不是手动
check that requests come the web and not manual
我在js中有一个简单的自动完成脚本,它获取用户键入的内容,将其发送到服务器,服务器检查与之相似的数据。 工作很棒。
$(".name_autocomplete").autocomplete({
serviceUrl: '/names',
onSelect: function (suggestion) {
$(this).value = suggestion;
}
});
但是由于该服务器端点是公共的,我不希望用户滥用它并让它通过蛮力吐出所有内容
有没有办法(在客户端或服务器端)限制对该 url 的请求仅来自该特定页面上的网站,而不是来自 curl
之类的内容?
最简单的
选择是删除没有用户代理字符串的连接(类似于属于已知机器人的用户代理字符串)。当然,如果你的用户足够聪明地使用 curl,他们可能知道如何使用它使用虚假的用户代理(默认情况下 curl 不会发送用户代理字符串),所以这只会阻止随意忙碌的人。
对于 nginx:
if ($http_user_agent ~ (agent1|agent2) ) {
return 444;
}
也许HTTP-Access-control可以帮助您与设置良好的用户代理结合使用:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
您可以控制源域并决定允许访问哪个域,不允许访问哪个域。
相关文章:
- 打开一个选项卡,并在firefox网络扩展中向其发出POST请求
- 如何在从缓存加载路由后强制服务工作者从网络请求路由
- 在慢速网络上,上一个Ajax请求会被下一个取消
- 无法连接到网络服务器.验证 Web 服务器是否正在运行,并且传入的 http 请求未被防火墙阻止
- 编辑网络请求网址
- 网络摄像头权限请求不适用于本地文件
- 将 chrome 网络请求的 addeventlistener 限制为当前选项卡或扩展程序的主窗口
- 路由器是否应该负责网络请求?(骨干.js)
- 检测 Chrome 扩展程序中网络请求的来源
- 使用nodeJS和phantomJS返回网络请求和响应,仅在控制台中工作
- 使用javascript阻止图像网络请求
- 开发人员工具:在弹出窗口中跟踪网络请求
- 如何连接到Firefox网络请求弹出窗口
- React Native:网络请求失败,但实际上没有
- 将网络请求从同步转换为异步(PHP/Javascript)
- 是ASP的使用.网络请求.JavaScript中的QueryString是安全的
- 谷歌Chrome插件开发-监控网络请求
- Firebase项目导致“认证/网络请求失败”;登录错误
- Firebase电子邮件身份验证网络请求失败
- React Native:何时/如何启动网络请求