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

背景

使用 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.com/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()
©️2020 CSDN 皮肤主题: 点我我会动 设计师: 上身试试 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值