JWT未随请求发送导致验证失败的问题求助
JWT未随请求发送导致验证失败的问题求助
大家好,我最近在开发网站的JWT验证功能时碰到了一个棘手的问题,折腾半天没找到原因,想请教下各位前辈。
具体情况是:用户登录后,服务器会返回一个JWT,我已经把这个token存在了客户端的localStorage里,用浏览器开发者工具能明确看到localStorage里确实有这个token。
但当我调用后端的verifyToken接口(POST请求)进行token验证时,后端始终返回“没有提供token”的错误。我把后端的验证代码贴出来:
exports.verifyToken = async (req, res) => { const token = req.headers.authorization?.split(" ")[1]; console.log(req.headers); console.log(token); if (!token) { return res.status(401).json({ message: 'No token provided' }); } try { const decoded = jwt.verify(token, process.env.JWT_SECRET); console.log("Decoded token:", decoded); return res.status(200).send('User is authorized'); } catch (error) { console.error('Token verification error:', error); return res.status(401).json({ message: 'User is unauthorized' }); } };
另外,服务器端的CORS配置如下:
app.use(cors({ origin: 'http://localhost:3000', methods: 'GET,HEAD,PUT,PAT...' }));
从后端控制台的打印信息来看,req.headers里根本没有Authorization字段,token变量也一直是undefined。我猜测会不会是前端请求时没把token正确放到请求头里?或者是CORS的配置有问题,导致跨域请求时Authorization头没能被正常携带?
有没有大佬能帮我分析下问题出在哪里,该怎么解决这个问题?
备注:内容来源于stack exchange,提问作者Nitin
相关产品推荐
相关产品推荐

