AJAX响应的限制大小

时间:2018-07-16 16:54:28

标签: javascript jquery ajax sanity-check

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

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

虽然我意识到自己的工作性质是独特的,但任何反馈都是欢迎的。

1 个答案:

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