如何获取express中的请求头?

Ali*_*ent 0 javascript node.js express jwt

我编写授权代码。单击登录按钮后,我创建一个新标题

res.header('Authorization', token)
Run Code Online (Sandbox Code Playgroud)

管理员登录路由器:

router.post('/admin_login', async (req, res) => {
    const adminDB = data.admins;
    const admin = adminDB.find(admin => req.body.email === admin.email)
    if (!admin) return res.status(400).send('Email in not found!')
    if (admin.password !== req.body.password) return res.status(400).send('Invalid password')
    const token = jwt.sign({ admin }, 'the_secret_key')
    res.header('Authorization', token)
    res.redirect('/admin')
})
Run Code Online (Sandbox Code Playgroud)

在管理路由器中登录后,我不会收到授权标头,但我不会收到它。我在中看到授权标头

验证码:

const jwt = require('jsonwebtoken')

module.exports = (req, res, next) => {
    const token = req.header('Authorization')
    console.log(token)

    if (!token) return res.status(401).send('Access Denied')

    try {
        const verified = jwt.verify(token, 'the_secret_key')
        req.admin = verified
        next()
    } catch (e) {
        res.status(400).send('Invalid token')
    }
}
Run Code Online (Sandbox Code Playgroud)

第一张图片:管理路由器中的标头
第二张图片:单击登录按钮后 admin_login 路由器中的标头



请帮我

T.J*_*der 10

据我从文档中可以看出,headerExpressRequest对象或其扩展的 Node.js上没有方法IncomingMessage

Express 文档说要检索标头,您可以使用get

req.get(field)

返回指定的HTTP请求头字段(不区分大小写的匹配)。

所以:

const token = req.get("Authorization");
Run Code Online (Sandbox Code Playgroud)

或者您可以使用以下headers对象IncomingMessage

const token = req.headers["authorization"];
Run Code Online (Sandbox Code Playgroud)

(注意小写,Node.js 在构建对象时使标头名称小写。)