【问题标题】:Unable to decode base64 from req.header.authorization无法从 req.header.authorization 解码 base64
【发布时间】:2015-11-16 10:35:21
【问题描述】:

在快递中,我从以下位置获取基本身份验证:

req.headers.authorization

我回来了

dXNlcm5hbWU6cGFzc3dvcmQ=

我说“嘿,这看起来像 base64”。我很快找到其中一个base64 sites 并对其进行解码,结果是'username:password'。所以我用谷歌搜索了如何在 express 4 中解码 base64。我最终得到了这段代码:

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

那是返回:

+"qUMI95iAMM]=I

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

【问题讨论】:

  • 它对我来说很好用:console.log(new Buffer('dXNlcm5hbWU6cGFzc3dvcmQ=', 'base64').toString('ascii')); 输出:username:password。此外,对于已经是字符串的值,您不需要 .toString()。

标签: javascript node.js express base64


【解决方案1】:

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

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

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

【讨论】:

  • “新缓冲区”已被弃用,使用“Buffer.from”
【解决方案2】:

现在使用新的 Buffer API

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

否则您将收到贬损警告。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多