限制 AJAX 响应的大小

Limit size of AJAX response

我正在构建一个去中心化的应用程序(我不控制服务器,只控制客户端),并希望添加一些完整性检查和预防措施来阻止坏人做恶意事情。这涉及(在许多其他事情中)通过使用从服务器发送的任意有效负载数据来防止对客户端的 DoS 尝试。

问题是:客户端如何限制从服务器接收的超过 JQuery AJAX 的数据的最大大小?如果我希望获取 JSON 的几个字节,而当我发出 AJAX 请求时却看到一个 30MB 的视频文件,我该如何停止请求并在我之后抛出错误?已收到前 16 KB?

虽然我认识到我的事业的性质是独一无二的,但我们欢迎任何反馈。

正如@Barmar 在评论中指出的那样,这是一个简单的案例,检查下载的 "onprogress" 事件并在超过我想要的最大大小时终止它。

这里是任何感兴趣的人的代码:

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()
          }
        }
      }
})