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


16

使用http(s)://CompanyName.com/xyz作为URL(例如,用于品牌宣传)而不更改服务端配置是否安全?

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

  • 某些Web后端可能不匹配
  • 某些负载平衡器/代理/缓存/应用程序层防火墙可能无法匹配
  • 某些客户端可能错误地应用了同源策略
  • 某些客户端可能在证书检查中不匹配
  • 虽然DNS通常不区分大小写,但IDN是否可以更改图片?

任何人在URL的主机名部分遇到大写字母的那些或其他问题吗?


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

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


例如,Firefox发送一个小写的Host标头(至少这是它的开发人员工具向我显示的标头),因此,假设所有浏览器都执行此操作,即使服务器路径上的某些设备不喜欢混合大小写,您也不会有任何问题主机名。curl另一方面,在发送标头时保留大小写。

Answers:


23

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

尽管主机不区分大小写,但为保持一致,生产者和规范化者应将小写字母用于注册名称和十六进制地址,而将百分数编码仅使用大写字母。

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


1
至少只要发生的最坏情况是内容被不合格的缓存多次缓存,就好像人们可以忍受一样。
CVn 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.