无法验证jwt- err_http_headers_sent:将标头发送给客户

发布于 2025-01-26 02:24:36 字数 1661 浏览 1 评论 0原文

我在验证JWT令牌方面存在一些问题。如果我保留验证部分,服务器会一遍又一遍地崩溃。如果我评论验证部分,则服务器运行完美。

function verifyJWT(req,res,next){
      if(!req.headers.authorization){
        return res.status(401).send({message: 'unauthorized'})
      }
      const token = req.headers.authorization.split(' ')[1]
//verify portion
      jwt.verify(token , process.env.ACCESS_TOKEN,(err,decoded)=>{
        if(err){
          return res.status(403).send({message: 'Forbidden access'})
        }
        console.log('decoded',decoded)
      })
      console.log(token,process.env.ACCESS_TOKEN,'inside verifyJWT!',req.headers.authorization)
      
      next()
}

错误: 节点:内部/错误:464 ERRORCAPTURESTACKTRACE(ERR); ^

错误[err_http_headers_sent]:发送给客户端后无法设置标头 在New Nodeerror(节点:内部/错误:371:5) 在serverresponse.setheader(节点:_http_outonodoing:576:11) 在serverresponse.header上(d:\ 3 ii \ royder_to_goal \ ms_11_backend \ genius-car-service-server \ node_modules \ express \ express \ lib \ response.js:776:10) 在serverresponse.send(d:\ 3 ii \ outhere_to_goal \ ms_11_backend \ genius-car-service-server \ node_modules \ express \ express \ lib \ wenspy.js:170:12) 在serverresponse.json(d:\ 3 ii \ outhere_to_goal \ ms_11_backend \ genius-car-service-server \ node_modules \ express \ express \ lib \ wendess.js:267:15) 在serverresponse.send(d:\ 3 ii \ outhere_to_goal \ ms_11_backend \ genius-car-service-server \ node_modules \ express \ express \ lib \ response.js:158:21) 在d:\ 3 ii \ yourne_to_goal \ ms_11_backend \ genius-car-service-server \ index.js:86:11 在processTickSandRepoxtions(节点:内部/process/task_queues:96:5){ 代码:'err_http_headers_sent' } [nodemon]应用程序崩溃了 - 启动之前等待文件更改...

I am having some issues with verifying the jwt token. The server crashes over and over again if I keep the verify portion. If i comment out the verify portion, then the server runs perfectly.

function verifyJWT(req,res,next){
      if(!req.headers.authorization){
        return res.status(401).send({message: 'unauthorized'})
      }
      const token = req.headers.authorization.split(' ')[1]
//verify portion
      jwt.verify(token , process.env.ACCESS_TOKEN,(err,decoded)=>{
        if(err){
          return res.status(403).send({message: 'Forbidden access'})
        }
        console.log('decoded',decoded)
      })
      console.log(token,process.env.ACCESS_TOKEN,'inside verifyJWT!',req.headers.authorization)
      
      next()
}

Error:
node:internal/errors:464
ErrorCaptureStackTrace(err);
^

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at new NodeError (node:internal/errors:371:5)
at ServerResponse.setHeader (node:_http_outgoing:576:11)
at ServerResponse.header (D:\3 II\Journey_to_goal\Ms_11_backend\genius-car-service-server\node_modules\express\lib\response.js:776:10)
at ServerResponse.send (D:\3 II\Journey_to_goal\Ms_11_backend\genius-car-service-server\node_modules\express\lib\response.js:170:12)
at ServerResponse.json (D:\3 II\Journey_to_goal\Ms_11_backend\genius-car-service-server\node_modules\express\lib\response.js:267:15)
at ServerResponse.send (D:\3 II\Journey_to_goal\Ms_11_backend\genius-car-service-server\node_modules\express\lib\response.js:158:21)
at D:\3 II\Journey_to_goal\Ms_11_backend\genius-car-service-server\index.js:86:11
at processTicksAndRejections (node:internal/process/task_queues:96:5) {
code: 'ERR_HTTP_HEADERS_SENT'
}
[nodemon] app crashed - waiting for file changes before starting...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

锦爱 2025-02-02 02:24:36

因为您已经在尝试块中发送了响应,并且在尝试块之外和之后,下一个呼叫。将next()放入try块中,但之后:

  if(err){
      返回res.status(403).Send({消息:'Forbidden访问'})
    }
 

我遇到了同样的问题,发现了原因

Because you already sent response in the try block, and you call next outside the try block and after it. Put next() inside try block but after:

    if(err){
      return res.status(403).send({message: 'Forbidden access'})
    }

I ran into the same problem and found the cause

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文