在表达中我从以下方面获取基本身份验证:
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?
答案 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())
否则,您将收到描述错误的警告。