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