为什么要对授权标头进行 Base64 编码?

2024-03-29

Twitter 的 API 需要发送一个授权标头,该标头是 API 密钥与 API 密钥连接的 Base64 编码。在节点中,我使用:

var base64 = new Buffer(apiKey + ':' + apiSecret).toString('base64');

发送的标头变为:

Authorization: 'Basic ' + base64

对字符串“apiKeyHere:apiSecretHere”进行 Base64 编码有什么意义?为什么不只接受包含原始 api 凭据的授权标头?

这个问题类似于Base 64 编码的目的是什么?为什么在 HTTP 基本身份验证中使用它? https://stackoverflow.com/questions/4070693/what-is-the-purpose-of-base-64-encoding-and-why-it-used-in-http-basic-authentica但投票的答案并没有完全回答我的问题。 Twitter 的 api 密钥和 api 密钥已经是 HTTP 兼容字符。它们看起来像这样(这些不是真的):

消费者密钥(API 密钥)8dme3utVQfOhlPk5BUG9XbFxR

消费者秘密(API秘密)QFZXoC7MP72JZtGMBNpjLGI4Vl1xr1q9dyPLp3u7jGtkESpbLm

那么为什么要进行base64编码呢?此外,该帖子指出“编码的目的是将用户名或密码中可能存在的非 HTTP 兼容字符编码为 HTTP 兼容字符。”用户名和密码不是已经是 HTTP 兼容字符了吗?


尽管我在w3文档中找不到它,但我相信它只是将Authorization标头的凭据编码为base64的协议,无论它有什么内容。对于 Twitter 来说,正如您所说,没有太大区别,但在其他情况下,凭据可以包含这些字符。为了保持统一并防止是否应该编码的错误,所有凭证都应该编码。

另一个原因可能是浏览器也以相同的方式对凭据进行编码。 Twitter 可能也想接受这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么要对授权标头进行 Base64 编码? 的相关文章

随机推荐