HTTP(S) URL 的主机名部分是否真正不区分大小写?

HTTP(S) URL 的主机名部分是否真正不区分大小写?

在不对服务端配置进行任何更改的情况下,使用 http(s)://CompanyName.com/xyz 作为 URL(例如,用于品牌推广目的)是否安全?

我知道 DNS 不区分大小写,但仍会有副作用吗?例如,我想到链中的各个部分都无法匹配 CompanyName.com ~ companyname.com:

  • 某些 Web 后端可能无法匹配
  • 某些负载均衡器/代理/缓存/应用层防火墙可能无法匹配
  • 某些客户端可能会错误地应用同源策略
  • 某些客户端可能无法匹配证书检查
  • 虽然 DNS 通常不区分大小写,但 IDN 可以改变这种情况吗?

有谁遇到过 URL 主机名部分大写字母相关的问题或其他问题吗?


[编辑]@Michael Hampton 指出,根据 HTTP 标准,主机名不区分大小写,但有些软件在这方面不符合要求。

我试图了解不合规软件(尤其是客户端)的普遍程度。我认为所有最近的主流浏览器都没有问题,但移动应用程序呢?(我是否应该将其拆分成一个单独的 SF 问题?)[/编辑]

答案1

是的,主机名确实不区分大小写,如RFC 3986§3.2.2, 因为DNS 中的主机名一般不区分大小写。这个 RFC 还给出了如何避免你提到的问题的建议:

尽管主机不区分大小写,但为了统一起见,生产者和规范化者应该对注册名称和十六进制地址使用小写字母,而对百分比编码仅使用大写字母。

我至少见过一个 HTTP 缓存(W3 总缓存) 不会以这种方式规范化主机名,并且最终多次缓存内容,例如在example.com、、等下Example.ComEXAMPLE.COM

相关内容