无法从req.header.authorization解码base64

Joh*_*ton 2 javascript base64 node.js express

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

req.headers.authorization
Run Code Online (Sandbox Code Playgroud)

从那以后我回来了

dXNlcm5hbWU6cGFzc3dvcmQ=
Run Code Online (Sandbox Code Playgroud)

我说"嘿,看起来像base64".我很快就去了其中一个base64站点并对其进行解码,结果证明是' username:password'.所以我谷歌如何解析快递4中的base64.我结束了这段代码:

console.log(new Buffer(req.headers.authorization.toString(), 'base64').toString('ascii'));
Run Code Online (Sandbox Code Playgroud)

那是回归:

+"qUMI95iAMM]=I
Run Code Online (Sandbox Code Playgroud)

哪个不是username:password.我也尝试了这个utf8设置,但也没有用.我也试过这个没有toString()req.headers.authorization.如何使用expressjs正确解码base64?

Sam*_*Sam 8

现在使用新的 Buffer API

console.log(Buffer.from(req.headers.authorization.split(" ")[1], 'base64').toString())
Run Code Online (Sandbox Code Playgroud)

否则你会收到被贬低的警告。


Joh*_*ton 7

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

console.log(new Buffer(req.headers.authorization.split(" ")[1], 'base64').toString())
Run Code Online (Sandbox Code Playgroud)

req.headers.authorization我回来了:Basic dXNlcm5hbWU6cGFzc3dvcmQ=.不只是base64字符串.

  • “new Buffer”已被弃用,请使用“Buffer.from” (3认同)