HTTP 主机名大小写(大写/小写)重要吗?
-
06-09-2019 - |
题
换句话说,我是否使用有关系吗? http://www.example.com/ 或者 http://wwW.exAmPLe.COm/ ?
我最近遇到了主机名的奇怪问题:我有一个Apache2.2+PHP5.1.4网络服务器,可以通过各种浏览器访问。特别是 IE6 用户(尤其是 IE6 用户)当他们的 UA 字符串负载着大量 BHO 时,还没有模式)在通过以下方式进入时似乎访问该网站时出现问题(cookie 消失,JS 拒绝加载) http://www.Example.com/, , 但不是 http://www.example.com/
我已经检查过 HTTP协议 和 域名系统 RFC,我的 P3P政策, 、cookie 设置和 标准作业程序;但我什至没有看到提及域名区分大小写。
(我知道路径和查询字符串区分大小写( ?x=foo
不同于 ?x=Foo
)并适当对待他们;我的代码中没有对域名进行解析/处理)
我是否做错了什么,或者这只是我应该解决的一些浏览器+工具栏废话?
解决方案
域名是的不强>区分大小写; Example.com
解析到相同的IP eXaMpLe.CoM
。如果Web服务器或浏览器对待Host
标头,如区分大小写的,这是一个错误。
其他提示
没有,这不应该有任何区别。
检查出URL RFC规格( http://www.ietf.org/rfc/ rfc1738.txt )。从第2.1节:
有关的弹性,程序解释 网址应该把大写字母 为等同方案小写 名称
由于您将问题表述为实际问题,然后描述了现实世界的问题,所以答案实际上是:是的。
关于 RFC 规范关于主机名的内容,其他答案是正确的。从技术上讲,它们应该不区分大小写。(事实上,较旧的惯例是顶级域名 (TLD) 应该全部大写......例如“apple.COM”)。
然而,在现实世界中,操作系统解析器和主要浏览器等成熟软件可以做到这一点。任何类型的辅助代码都可能错误地处理这个问题,并把你搞砸。
根据 http://tools.ietf.org/html/rfc1035 :
有关属于官方协议的一部分的DNS的所有部分,都 字符串之间的比较(例如,标签,域名等) 在不区分大小写的方式完成。目前,这条规则是 整个域系统力无异常。
然后它接着说,这可能在未来改变。我认为它是安全的假设COM域名是不区分大小写的,但其他领域允许使用的非ASCII字符可能会有所不同。
没有,存在与关于所述协议指定符不区分大小写。
可以在RFC针对URL 看到这一点。
2.1。网址的主要部分
方案名称由一个序列的 字符。小写字母 “A” - “Z”,数字和字符 加号( “+”),句点( “”)和连字符 (“-“) 被允许。对于弹性, 项目解释网址应 治疗大写字母等同 以降低方案的名称的情况下(例如, 允许 “HTTP” 以及 “HTTP”)。