无法从req.header.authorization解码base64

时间:2015-08-22 15:50:23

标签: javascript node.js express base64

在表达中我从以下方面获取基本身份验证:

req.headers.authorization

从此我回来了

dXNlcm5hbWU6cGFzc3dvcmQ=

我说“嘿,看起来像base64”。我很快转到其中一个base64 sites并对其进行解码,结果证明是“username:password”。所以我谷歌如何解析快递4中的base64。我最后得到了这段代码:

console.log(new Buffer(req.headers.authorization.toString(), 'base64').toString('ascii'));

那是回归:

+"qUMI95iAMM]=I

哪个不是username:password。我也尝试使用utf8设置,但也没有用。我也在toString()上没有req.headers.authorization的情况下尝试了此操作。如何使用expressjs正确解码base64?

2 个答案:

答案 0 :(得分:6)

如果有人像我一样愚蠢,并且没有意识到从req.headers.authorization返回的字符串是单词Basic后跟base64编码的字符串,则必须拆分解码前的字符串。

console.log(new Buffer(req.headers.authorization.split(" ")[1], 'base64').toString())

req.headers.authorization为我回复:Basic dXNlcm5hbWU6cGFzc3dvcmQ=。不只是base64字符串。

答案 1 :(得分:1)

现在使用新的Buffer API

console.log(Buffer.from(req.headers.authorization.split(" ")[1], 'base64').toString())

否则,您将收到描述错误的警告。