URL中的协议名称是否区分大小写?

32

hTTp://foo.comHttp://foo.COM是相同的吗?

我知道主机名不区分大小写,但路径名和查询部分是区分大小写的。

4个回答

27

12

在实践中不区分大小写,但在理论上只允许使用小写。

来自RFC 1738

2.1. URL的主要部分

URL语法的完整BNF描述在第5节中给出。

一般来说,URL的书写方式如下:

   <scheme>:<scheme-specific-part>

URL包含正在使用的方案名称()后跟冒号,然后是一个字符串(其
解释取决于方案。

方案名称由一系列字符组成。小写字母“a”-“z”,数字和字符加号(“+”),期间
(“.”)和连字符(“-”)是允许的。为了弹性,在解释URL的程序中
应将大写字母视为与方案名称中的小写字母相等(例如,允许
“HTTP”以及“http”)。


1
RFC 3986 进行了更新。请查看顶部的元数据:http://tools.ietf.org/html/rfc3986。 - Tobu

5
引用RFC3986
尽管方案是不区分大小写的,但规范形式是小写的,并且指定方案的文件必须使用小写字母。

2
换句话说,一般来说,这些RFC(与互联网标准相关的)大多数都对生产者端严格要求,而对消费者端宽松要求。 - HRJ

3

这份HTML规范(某些HTML规范)指出:

URL通常区分大小写(机器名称除外)。可能存在URL或URL的一部分不区分大小写的情况,但识别它们可能并不容易。用户应始终考虑URL是区分大小写的。

RFC1738(统一资源定位符(URL))也指出(注意,URL的格式为<scheme>:<scheme-specific-part>):

方案名由一系列字符组成。允许使用小写字母“a”-“z”、数字和字符加号(“+”)、句点(“.”)和连字符(“-”)。为了提高鲁棒性,解释URL的程序应将方案名中的大写字母视为等效于小写字母(例如,允许“HTTP”和“http”)。

因此,只允许小写字母,但是大写字母也被容忍。
顺便说一下,Safari会自动转换为小写字母。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接