Appendix B. 'charset' Parameter 的部署考虑事项
B.1. User Agents
未实现 'charset' 的 user agents 将像以前一样继续工作, 忽略这个新 parameter.
已经默认使用 UTF-8 encoding 的 user agents 按定义实现了 'charset'.
其他 user agents 可以保持其默认行为, 并在看到新 parameter 时切换到 UTF-8.
B.2. Servers
不支持 credentials 中 non-US-ASCII characters 的 servers 不需要任何更改即可支持 'charset'.
需要支持 non-US-ASCII characters 但无法使用 UTF-8 character encoding scheme 的 servers 不会受到影响; 它们将继续像以前一样正常或不正常地工作.
最后, 需要支持 non-US-ASCII characters 且可以使用 UTF-8 character encoding scheme 的 servers, 可以通过在 authentication challenge 中指定 'charset' parameter 来选择加入. 理解 'charset' parameter 的 clients 随后将开始使用 UTF-8, 而其他 clients 将继续使用其默认 encoding, broken credentials 或完全不发送 credentials. 在所有 clients 都升级为支持 UTF-8 之前, servers 很可能在 requests 中同时看到 UTF-8 和 "legacy" encodings. 当按 UTF-8 处理失败时 (由于无法解码为 UTF-8 或 user-id/password 不匹配), server 可能尝试 fallback 到先前支持的 legacy encoding, 以适应这些 legacy clients. 注意, implicit retries 需要谨慎完成; 例如, 某些 subsystems 可能检测到重复 login failures, 并将其视为潜在 credentials-guessing attack.
B.3. 为什么不直接把默认 encoding 切换为 UTF-8?
现在仍有一些 sites 默认使用 local character encoding scheme, 例如 ISO-8859-1 ([ISO-8859-1]), 并期望 user agents 使用该 encoding. 如果 user agent 切换到不同 encoding, 例如 UTF-8, 这些 sites 上的 authentication 将停止工作.
注意, sites 甚至可能检查 User-Agent header field ([RFC7231], Section 5.5.3), 以决定期望 client 使用哪种 character encoding scheme. 因此, 它们可能对某些 user agents 支持 UTF-8, 但对其他 user agents 默认使用其他 encoding. 后一组 user agents 必须继续执行今天的行为, 直到这些 servers 中的大多数已升级为始终使用 UTF-8.