Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 限制AJAX响应的大小_Javascript_Jquery_Ajax_Sanity Check - Fatal编程技术网

Javascript 限制AJAX响应的大小

Javascript 限制AJAX响应的大小,javascript,jquery,ajax,sanity-check,Javascript,Jquery,Ajax,Sanity Check,我正在构建一个分散的应用程序,我不控制服务器,只控制客户端,我想添加一些健全的检查和预防措施来阻止坏人做恶意的事情。这涉及到许多其他事情,通过使用从服务器发送的任意有效负载数据来防止客户机上的DoS尝试 问题是:客户端如何限制通过jQueryAjax从服务器接收的数据的最大大小?如果我希望获取几个字节的JSON,而在发出AJAX请求时却收到一个30MB的视频文件,那么在收到前16KB的请求后,如何停止请求并抛出错误呢 虽然我认识到我的工作性质是独特的,但任何反馈都是wwlcome。正如@Barm

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

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


虽然我认识到我的工作性质是独特的,但任何反馈都是wwlcome。

正如@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()
          }
        }
      }
})

您无法控制服务器发送的内容。这个问题其实并没有什么意义,您可以做的一件事就是尝试一个HEAD请求并检查content-length报头,然后再进行GETHow,客户机如何限制他们不能限制的最大大小,除非您作为API开发人员,添加一种方法来处理这个问题。因此,如果您可以控制API,您可以通过在有效负载中发送max_results或max_response_size键来实现一些限制,但这不是我见过的事情。@charlietfl我知道我无法控制它,但如果响应太大,我只想中止请求。我使用IPFS查找散列,所以不要认为HEAD会起作用。许多执行批量请求的API都有一个参数,指定要返回多少结果。