【问题标题】:How to get request headers in express?如何在快递中获取请求标头?
【发布时间】:2020-06-14 00:25:18
【问题描述】:

我为授权编写代码。单击登录按钮后,我使用

创建了一个新标题
res.header('Authorization', token)

admin_login 路由器:

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')
})

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

中看到授权标头

验证码:

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')
    }
}

第一个 img:管理路由器中的标头
第二个img:点击登录按钮后admin_login路由器中的标题



请帮帮我

【问题讨论】:

    标签: javascript node.js express jwt


    【解决方案1】:

    你应该使用 req.get(headerName) 方法

    【讨论】:

      【解决方案2】:

      据我从文档中得知,Express Request 对象或其扩展的 Node.js IncomingMessage 上没有 header 方法。

      Express 文档说要检索标头,请使用 get:

      req.get(field)

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

      所以:

      const token = req.get("Authorization");
      

      或者您可以使用来自IncomingMessageheaders object

      const token = req.headers["authorization"];
      

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

      【讨论】:

      • 我写了,但仍然没有得到授权标头。
      • @AliceArgent - 我不清楚你的各种作品是什么。您已经说过您正在设置响应中的标头,但您还希望在请求中看到它?如果请求者发送它,您只会在请求中看到它。
      • 我不知道。谢谢,你)也许,我理解我的错误。我会尝试在代码中发送标头以进行验证。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-27
      • 2020-10-15
      • 1970-01-01
      • 2013-10-25
      • 2015-02-19
      • 2011-06-26
      • 1970-01-01
      相关资源
      最近更新 更多