【发布时间】:2020-11-27 00:57:09
【问题描述】:
我在 Web 客户端中使用 AXIOS,以便将文件作为上传上传到 express 后端。由于文件的大小和客户端用户的带宽都是可变的,因此 POST 请求可能需要一定的时间才能完成。在后端应用了一些逻辑,请求被立即拒绝。
问题是客户端在请求完成后才收到响应,可能是几秒钟。
我已经测试过这不是后端的错,因为无论技术如何,在网络中发布到任何启用后的任意 URL 时,行为都是相同的。这是一个(过度)简化的案例。
这是发布操作。请注意对任意启用后 URL 的推荐请求。它的行为完全相同:
try{
console.log("posting....")
const res = await axios.post("http://localhost:4000/upload", formData)
// const res = await axios.post("https://github.com/logout", formData)
console.log("result:")
console.log(res)
}catch(err){
console.error(err)
}
以及demo express后端路由:
app.post("/upload", (req, res) => {
console.log("Rejecting...")
res.status(403).send()
console.log("Rejected.")
return
})
出于测试目的,我选择了一个 3.7Mb 的文件,并将浏览器带宽限制为 Fast 3G 预设。
后端立即输出:
拒绝... 被拒绝。
而请求在返回 403 错误之前等待大约 43 秒:
我在这里遗漏了一些明显的东西吗?它是如此常见的功能,这让我怀疑这是正确的处理方式。如果确实如此,我们是否有任何信息表明 express 的线程在此期间是否处于活动状态,或者只是给客户带来不便?
提前致谢!
【问题讨论】:
标签: node.js express axios xmlhttprequest multipartform-data