我正在构建一个去中心化的应用程序(我不控制服务器,仅控制客户端),并希望添加一些健全性检查和预防措施,以阻止恶意人员进行恶意操作。这涉及(许多其他事情),通过使用从服务器发送的任意有效负载数据来防止在客户端进行DoS尝试。
问题是这样的:客户端如何限制通过JQuery AJAX从服务器接收的数据的最大大小?如果我期望获取几个字节的JSON,而在我提出AJAX请求时却被一个30MB的视频文件迎接,我如何在收到前16 KB后停止请求并抛出错误? / p>
虽然我意识到自己的工作性质是独特的,但任何反馈都是欢迎的。
答案 0 :(得分:0)
正如@Barmar在评论中指出的,这是检查下载的“进行中”事件并在超过我希望的最大大小时终止下载的简单情况。
以下是任何有兴趣人士的代码:
var xhr = $.ajax({
url: "your-url",
success: () => {
// ...
},
xhrFields: {
onprogress: function(progress) {
if (progress.loaded > config.MAX_HASH_DESCRIPTOR_SIZE) {
// stop any unreasonably long malicious payload downloads.
xhr.abort()
}
}
}
})