背景
使用 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
发布评论