问题描述
我使用带有Express和Passport-JWT的Busboy从我的客户端上载文件,当使用有效的JWT令牌对客户端进行授权时,一切正常,但是在未授权客户端的情况下,尽管向客户端发送了错误代码401,但是当我在ubuntu服务器(TCPDump)中拦截到相关端口的传入通信时,我看到负载从该端口进入。尽管所有用于上传该文件的监听器都位于/ uploads路由内,并且不清楚上传数据的前进方向
Router.post("/",passport.authenticate('jwt',{session:false}),(req,res)=>{
try{
const busboy = createBusboy(req);
busboy.on("uploadFinished",(uploadedFiles:any)=>{
res.json(JSON.parse(uploadedFiles))
})
busboy.on("error",(err:any)=>{
console.log(err)
})
req.pipe(busboy);
}catch(e){
res.json({e})
}
})
解决方法
对于那些可能遇到此问题的人,我找到了根源, 在向客户端发送401错误后,连接仍处于打开状态,其余的multipart / data内容正在流向服务器,因此我可以拦截它。解决方法是在您的响应标头中写入“ connection:close”。