换句话说,我使用http://www.example.com/还是http://wwW.exAmPLe.COm/?
是否重要我最近遇到了主机名的奇怪问题:我有一个Apache2.2 + PHP5.1.4网络服务器,可以通过各种浏览器访问。特别是IE6用户(特别是他们的UA字符串背负着大量的BHO,没有模式)似乎在通过http://www.Example.com/进入时访问网站时出现问题(cookie消失,JS拒绝加载),但不是{{ 3}}
我检查了http://www.example.com/和HTTP RFC,我的DNS,Cookie设置和P3P policies;然而,我甚至没有看到提到域名是区分大小写的。
(我知道路径和查询字符串区分大小写(?x=foo
与?x=Foo
不同)并对其进行适当处理;我的代码中没有对域名进行解析/处理)
我做错了什么,或者这只是一些浏览器+工具栏废话我应该解决?
答案 0 :(得分:24)
域名不区分大小写; Example.com
将解析为与eXaMpLe.CoM
相同的IP。如果Web服务器或浏览器将Host
标头视为区分大小写,则表示存在错误。
答案 1 :(得分:5)
不,这不应该有任何区别。
查看URL RFC Spec(http://www.ietf.org/rfc/rfc1738.txt)。从第2.1节开始:
对于弹性,程序解释 网址应该处理大写字母 相当于方案中的小写 名称
答案 2 :(得分:4)
既然你把问题作为一个实际问题,然后描述了一个现实世界的问题,答案实际上是:是的。
其他答案对于RFC规范关于主机名的说法是正确的。从技术上讲,它们应该不区分大小写。 (事实上,较旧的惯例是顶层域名(TLD)应该是全部大写的......比如“apple.COM”)。
然而,在现实世界中,像OS解析器和主流浏览器这样的成熟软件可以做到这一点。任何类型的二级代码都可以处理这个错误,并搞砸了你。
答案 3 :(得分:1)
根据http://tools.ietf.org/html/rfc1035:
对于作为官方协议一部分的DNS的所有部分,全部 字符串之间的比较(例如,标签,域名等) 以不区分大小写的方式完成。目前,这个规则是在 整个域名系统毫无例外地强行执行。
接着说,这可能会在未来发生变化。我认为可以安全地假设COM域不区分大小写,但允许使用非ASCII字符的其他域可能会有所不同。
答案 4 :(得分:0)
不,协议说明符没有区分大小写。
You can see this in the RFC for URLs
2.1。 URL的主要部分
方案名称由一系列序列组成 字符。小写字母 “a” - “z”,数字和字符 加(“+”),句号(“。”)和连字符 (“-“) 被允许。为了弹性, 解释URL的程序应该 将大写字母视为等效字母 计划名称中的小写(例如, 允许“HTTP”以及“http”)。