-2

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

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

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

4

1 回答 1

0

正如@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()
          }
        }
      }
})
于 2018-07-16T18:19:01.990 回答