NodeJs - Express 中间件修改 Header: TypeError [ERR_INVALID_CHAR]: Invalid character in header content

编程知识 更新时间:2023-04-05 06:34:54

背景

使用 Express 中间件进行数据代理方法,用户信息统一使用 Redis 缓存

  • user-redis
const user_redis = async function (req, res, next) {
    const token = req.headers['authorization']
    const user = await redis.client.getAsync(token).then((data) => {
        return data
    })
    // 给 header 添加用户信息,结果抛下面异常
    req.headers.user_info = user
    next()
}

异常信息

TypeError [ERR_INVALID_CHAR]: Invalid character in header content ["user_info"]
    at ClientRequest.setHeader (_http_outgoing.js:473:3)
    at new ClientRequest (_http_client.js:193:14)
    ......

解决方法

参考:

https://github/expressjs/express/issues/3401

将 user 信息进行 base64 编码后,在应用层进行解码即可;

  • user_redis
const user_redis = async function (req, res, next) {
    const token = req.headers['authorization']
    const user = await redis.client.getAsync(token).then((data) => {
        return data
    })
    // 给 header 添加用户信息,结果抛下面异常
    req.headers.user_info = Buffer.from(user).toString('base64')
    next()
}
  • application
const user_str = req.headers.user_info
const userInfo = Buffer.from(user_str,'base64').toString()

更多推荐

NodeJs - Express 中间件修改 Header: TypeError [ERR_INVALID_CHAR]: Invalid character i

本文发布于:2023-04-05 06:34:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/07b388170084946e13ba1bc9759e8ac5.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:中间件   Header   TypeError   Express   NodeJs

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 45304文章数
  • 14阅读数
  • 0评论数