我的评论位于https://core.trac.wordpress.org/ticket/35248#comment:9:
我对第一个链接的回复( https://web.archive.org/web/20160604095348/http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/web-fully-qualified-domain-name.html):
最初,按照RFC 1738(§3.1)的定义,(通用Internet方案)URL的“主机”部分始终是毫无疑问的完全限定域名,并且是区分完全限定域名和非完全限定域名的常规机制。限定域名不适用。无论是example.com。或example.com,则主机应该是相同的。
-我认为他是不对的,根据rfc 1738,我认为url中根本不允许使用“ example.com”,在第二个文本中引用了该词,并引用:
3.1。通用Internet方案语法
// <用户>:<密码> @ <主机>:<端口> / <URL路径>
主办
网络主机的标准域名
和“ example.com”当时不能在http标头中使用,因为rfc 1738是1994年,并且host字段仅在1997年出现在http 1.1中(可以在Wikipedia中查看)。
因此,实际上,只有fqdn保留在网址中。我认为,这是rfc 1738中的错误,因为以这种方式,它(试图使)“相对域”功能无效。如果不禁止,则理论上可以在本地脚本站点的“ a”标签hrefs中使用它们,或者如果浏览器和服务器支持,则可以在使用相对域的大公司内部的静态html文档中使用它们。但是即使rfc 1738禁止使用它们,人们也没有听从:他们继续以相对形式使用顶级域名,即没有尾随点,因此rfc 1738不允许这样做并不是一个大的实际问题,人们不得不使用替代方法相对域名:他们只是将本地顶级域名设为“本地主机”(并且使用和使用它们也没有尾随点)。
然后他说:
不幸的是,实际上,在将主机名映射到一组IP地址时,Web浏览器始终违反该规范,并通过其DNS客户端库的名称限定过程传递了“主机”部分。(例如,使用BIND DNS客户端库的用户将保留RES_DNSRCH选项,并且如果缺少最后的结尾点,则不会附加该结尾点。)
-我认为他是说没有尾随点的主机应该作为错误抛出,而只有绝对域(fqdn)应该传递给dns。我认为可能浏览器确实将所有域都传递给了dns,因为人们使用了他们自定义的本地顶级域,例如“ localhost”。并且无论如何,后来在1998年发布的rfc 2396中,允许在网址中使用顶级域名而不使用尾随点。
然后,作者(Jonathan de Boyne Pollard)引用了rfc 2396,并对它根据既定的人类行为(即事实上的标准)而改变感到遗憾,他说最好是浏览器遵守rfc 1738,并建议所有人只使用fqdn,所有地方,如RFC 1738所指示。
-但是,如果人们遵守RFC 1738会发生什么?像“http://example.com/test.html “和”http://localhost/test.html “必须全部重写为”http://example.com./test.html “和”http://localhost./test.html“。浏览器必须将没有点的主机标记为错误,或者将其重定向为完整/绝对形式。所有配置本地顶级域(如“ localhost”)的人都必须将其服务器配置为仅接受请求(例如“ localhost。”之类的域),或者接受“ [localhost]中的所有URL”并将其重定向到“ [localhost。]中的相应URL”。“ localhost”之类的文本仅在浏览器地址栏中输入时才有用,但是只会是非常无用的用法,并且不需要相对域功能,因为浏览器会在键入时搜索域,因此在html源中使用它们将变得无用,因为这将导致此类链接无法正常工作或单击全部与“本地主机”的链接会将用户移至“本地主机”。”,那么每次点击(在此类链接上)都将获得额外的重定向。因此,rfc 1738会使计划中的“相对域”功能完全无用。如果某些公司使用了该功能,并在其本地站点中使用了其相对域,并且其具有相对域的URL不会被浏览器重定向到绝对形式,因此它们的站点可以正常工作,如果他们也遵循rfc 1736,他们会将其服务器配置为仅接受fqdn,则必须使用以下命令重写所有此类URL fqdn,或对此类URL的每次单击进行额外的重定向。如果该公司喜欢在其地址栏和html来源中使用“ team101”而不是“ team101.microsoft.com”之类的短域名,则他们必须开始使用他们自定义的内部顶级域名,例如“ team101”,即“本地主机”,而不是“ team101.microsoft.com”之类的子域(在他们决定遵循rfc 1738之前可以用作“ team101”)。
-
而且我发现,RFC 1738大力支持的尾随点实际上仅在不带尾随点的标准之后出现!它在1987年与rfc 1034一起出现,在第二个链接中被引用,我引用它:
由于完整的域名以根标签结尾,因此导致
以点结尾的印刷表格。我们使用此属性来区分:
-代表完整域名的字符串
(通常称为“绝对”)。例如,“ poneria.ISI.EDU”。
-代表a开头标签的字符串
域名不完整,应填写
使用本地域知识的本地软件(通常是
称为“相对”)。例如,在
ISI.EDU域。
RFC 1034(1987年)刚刚声明了所有使用过的域,似乎它们都没有尾随点,将它们都声明为相对域!但他们仍然像以前一样工作,因此可能很少有人对此有所了解,并继续认为当他们使用“ example.com”时不加任何结尾时,他们无疑会要求一个唯一的真实“ example.com”网站。因此,在某些情况下,这又成为另一种安全漏洞:子域管理员可能会欺骗著名的真实example.com,即使他没有获得创建任何本地域(如“ localhost”)的权限。因此,rfc 1034的设计也不是很好:似乎其作者并不希望它会{不广为人知,因此造成安全漏洞}!
可能是rfc 1738(1994)最终尝试将绝对域和相对域之间的区分的概念带给广大读者,并在6年后修复了安全漏洞,{但是通过禁止URL中的相对域来修复安全漏洞,使得相对域无用,{但我认为它们可能没有被广泛使用,可能仅在某些大公司中使用}}。因此,如果遵守,那么RFC 1737的结果将是什么[左]?-1)1987年声明的相对域最终将变得无用,因此,用于显示绝对域的尾随点也将最终变为无用和多余的“合法”,即由rfcs定义!(但也许他们计划了多年以后,当广大受众(公众)开始了解相对域的可能性时,才在URL中重新允许相对域)。2)和rfc 1737,如果遵守,还将修复安全漏洞。-但是,即使rfc 1034大规模传播,也不会造成安全漏洞,并且众所周知,使用相对域并不安全!-因此,解决该问题的主要方法是吸引广泛的受众,而发布更多的rfc只是许多方法之一。
我现在认为,相对域功能可能在RFC 1034(1987年)之后就尚未广为人知,因为它的使用范围太有限:仅在某些大公司或提供商的本地网络中,并且该功能没有实际价值,因为本地网络已经可以建立任何本地域,所以该功能仅适用于它自己,实际上这是rfc中无用的文本,任何人都应该知道和使用,而没有任何额外的好处!但是当浏览器开始服从它时,人们通过广泛忽略rfc创造了很少的安全漏洞。
我昨天检查了相对域名功能,它可以工作。(这是可以的,因为RFC 2396(1998年)在RFC 1034(1987年)被拒绝之后又允许了,后来RFC 3986(2005年)仍允许使用)。我在Windows 10中添加了dns后缀-控制面板-...-网络设备属性-ipv4属性-其他-dns选项卡。当我添加“ google.com”然后打开“在firefox中,“ http:// mail / ”会打开google的服务器,但未将其配置为仅在http“主机”标头中使用“邮件”,因此我得到了类似“ 404”的页面。
-
我对第二个链接的回复( http://www.dns-sd.org/trailingdotsindomainnames.html):
他还引用了rfc 1738中的规则,并说:
不幸的是,实现Web浏览器客户端的人们似乎不明白这意味着什么。当您访问网站时,在应用DNS用户的搜索列表来构造DNS服务器中的标准名称后,大多数网络浏览器在“主机:”字段中输入的值是用户键入的内容,而不是计算机最终实际使用的内容。部分名称。例如,用户可以使用以下三种不同的方式来引用主机“ www.example.com”。...在将“ Host:”参数发送到Web服务器时,Web浏览器客户端将输入用户键入的内容(“ www.example.com。”,“ www.example.com”或“ www”)。客户端最终在DNS中查找的内容(在所有三种情况下均为“ www.example.com。”)。...
-这不是很正确(正确),因为rfc 1738在这方面非常严格,即使在浏览器的地址栏中,它也不允许所有url中的相对域,并且url本身是[推荐]的制作方式任何对站点的引用,即使人们将其写在纸上也是如此,因此rfc 1738不允许用户以3种方式引用该站点,前提是该用户认为他们使用了URL!
并且似乎本文的作者(Stuart Cheshire)不了解rfc 2396,因此此文本已过时。
-
如今情况如何?RFC 3986(https://tools.ietf.org/html/rfc3986#page-21)允许引用绝对域而没有结尾点:它表示“ DNS中完全限定域名的最右边域标签后可以跟一个”。 ”,如果“必须区分完整的域名和某些本地域名”,则应使用它。我认为由于事实上的标准,几乎没有必要,因此wordpress可以接受事实上的标准,并从带有尾随点的地址重定向到没有它的地址。