我正在阅读W3C URL Specification,我注意到没有明确提及此事。
实验
所以我在curl
尝试的是
www.google.com
然后
www.GOOGLE.com
并且这些返回了相同的文档。所以我想也许谷歌拥有其域名的所有变种,所以我尝试了其他网站,我得到了混合的结果。
所以我在URL规范中混合了这个案例,它似乎允许混合大小写。
将此应用于REST API设计
因此,在将此应用于REST API设计时,有时我们使用标识符的概念从服务器返回特定资源。 E.g。
在https://localhost:8080/contacts/MYSELF
中,MYSELF
将是典型的标识符
根据以前的经验,MYSELF
的情况无关紧要。但是如果我想要对标识符进行严格的验证呢?
当然,您可以违反规范并在应用程序中执行此操作;但在这种情况下,适当的做法是什么?
回到主题。 网址是否不区分大小写?
答案 0 :(得分:1)
域名不区分大小写。您不需要购买每个变体,因为获取域名可以为您提供各种变体。
没有规范说“路径”'网址的一部分必须是特定情况。路径不不区分大小写,因此访问同一域上的/foo
和/FOO
可能会产生不同的资源。
答案 1 :(得分:1)
在常规URI语法中(由RFC 3986定义,当前为Internet Standard for URIs),只有两个组件不区分大小写:
百分比编码三元组中的字母(即a
- f
,A
- F
)也不区分大小写。
其他所有内容都区分大小写。
但是,URI schemes可以为其URI覆盖此内容(请参阅Case Normalization)。
对于HTTP(S)URI,规范不会使任何其他组件不区分大小写(restates方案和主机不区分大小写)。
这意味着以下HTTP URI 等效:
http://example.com/foo
HTTP://example.com/foo
http://EXAMPLE.com/foo
http://example.COM/foo
HTTP://EXAMPLE.COM/foo
htTp://exAMPlE.cOm/foo
(最佳做法是将方案和主机标准化为小写。)
这些不等同:
http://example.com/foo?bar#baz
http://example.com/fOo?bar#baz
http://example.com/foo?bAr#baz
http://example.com/foo?bar#bAz
http://example.com/FOO?BAR#BAZ
答案 2 :(得分:0)
根据W3规范 -
一般来说,网址区分大小写(机器除外) 名)。在没有案例的情况下,可能会有网址或部分网址 问题,但识别这些可能并不容易。用户应该永远 认为URL区分大小写。