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

Nil*_*ann 17 http domain case-insensitive

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

我知道 DNS 不区分大小写,但还会有副作用吗?我正在考虑例如链的各个部分无法匹配 CompanyName.com ~ companyname.com:

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

有人在 URL 的主机名部分遇到过这些或其他问题吗?


[edit] @Michael Hampton 指出,根据 HTTP 标准,主机名不区分大小写,但某些软件在这方面不合规。

我试图了解不合规软件的流行程度,尤其是客户。我认为所有最近的主要浏览器都很好,但是例如移动应用程序呢?(我应该更好地将其拆分为一个单独的 SF 问题吗?)[/edit]

Mic*_*ton 24

是的,主机名确实不区分大小写,如RFC 3986 § 3.2.2 中所述,因为主机名通常在 DNS 中不区分大小写。此 RFC 还提供了有关如何避免您提到的问题的建议:

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

我已经看到至少一个HTTP缓存(W3总缓存),其不以这种方式不归一化的主机名,并结束了内容多次高速缓存,例如下example.comExample.ComEXAMPLE.COM等。