【发布时间】:2018-07-16 16:54:27
【问题描述】:
我正在构建一个去中心化的应用程序(我不控制服务器,只控制客户端),并且想要添加一些健全性检查和预防措施来阻止坏人做恶意的事情。这涉及(以及许多其他事情),通过使用从服务器发送的任意有效负载数据来防止客户端上的 DoS 尝试。
问题是这样的:客户端如何限制通过 JQuery AJAX 从服务器接收的数据的最大大小?如果我希望获取几个字节的 JSON,但在我发出 AJAX 请求时却收到一个 30MB 的视频文件,我如何在收到前 16 KB 后停止请求并抛出错误?
虽然我认识到我的事业的性质是独一无二的,但我们欢迎任何反馈。
【问题讨论】:
-
您无法控制服务器发送的内容。问题没有任何意义
-
您唯一能做的就是在进行 GET 之前尝试 HEAD 请求并检查内容长度标头
-
“客户端如何限制最大尺寸” 他们不能,除非您作为 API 开发人员添加一种方法来处理它。因此,如果您可以控制 API,则可以通过在有效负载中发送
max_results或max_response_size密钥等方式来实现一些限制,但随意,这不是我见过的事情。 -
@charlietfl 我知道我无法控制它,但如果响应太大,我只想“中止”请求。我正在使用 IPFS 来查找哈希,所以不要认为 HEAD 会起作用
-
很多用于批量请求的 API 都有一个参数来指定返回多少结果。
标签: javascript jquery ajax sanity-check