未经授权的用户在被401错误拒绝后将多部分/数据发送到服务器事件

问题描述

我使用带有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”。