gpt4 book ai didi

http - 我应该为 HTTP 基本身份验证使用什么编码?

转载 作者:可可西里 更新时间:2023-11-01 15:03:36 26 4
gpt4 key购买 nike

RFC2617 表示将用户名和密码编码为 base64,但没有说明在创建用于输入 base64 算法的八位字节时使用什么字符编码。

我应该使用 US-ASCII 还是 UTF8?或者有人已经在某个地方解决了这个问题?

最佳答案

原始规范 - RFC 2617

RFC 2617可以读作“ISO-8859-1”或“未定义”。你的选择。众所周知,许多服务器使用 ISO-8859-1(不管喜欢与否),当您发送其他内容时会失败。所以可能唯一安全的选择是坚持使用 ASCII。

有关更多信息和解决此问题的建议,请参阅草案 "An Encoding Parameter for HTTP Basic Authentication" (它构成了 RFC 7617 的基础)。

新 - RFC 7617

自 2015 年以来有 RFC 7617 ,它废弃了 RFC 2617。与旧的 RFC 相比,新的 RFC 明确定义了用于用户名和密码的字符编码。

  • 默认编码仍未定义。只需要与 US-ASCII 兼容(这意味着它将 ASCII 字节映射到 ASCII 字节,就像 UTF-8 那样)。
  • 服务器可以选择在其质询中发送额外的身份验证参数 charset="UTF-8",如下所示:
    WWW-Authenticate: Basic realm="myChosenRealm", charset="UTF-8"
    这宣布服务器将接受用户名/密码中的非 ASCII 字符,并且它希望它们以 UTF-8 编码(特别是 Normalization Form C)。请注意,仅允许使用 UTF-8。

完整版:

阅读the spec .它包含其他详细信息,例如确切的编码过程以及应支持的 Unicode 代码点列表。

浏览器支持

截至 2018 年,如果用户输入非 ASCII 字符作为用户名或密码(即使服务器未使用 charset 参数),现代浏览器通常会默认为 UTF-8。

  • Chrome 似乎也使用 UTF-8
  • Internet Explorer 不使用 UTF-8 ( issue #11879588 )
  • Firefox 正在试验当前计划针对 v59 (bug 1419658) 进行的更改

领域

即使在 RFC 7617 中,realm 参数仍然只支持 ASCII 字符。

关于http - 我应该为 HTTP 基本身份验证使用什么编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7242316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com