链接到资源(至少)有三种方法:
href="foo/bar.html"
href="/foo/bar.html"
href="http://example.com/foo/bar.html"
第一个是"相对url",没问题。但我看到(2)和(3)都被称为"绝对url"。哪个被正确地称为"绝对url",另一个的正确名称是什么?
(参考相关标准或其他官方文件可获得加分。)
以单斜杠字符开头的相对引用是
称为绝对路径参考。执行
的相对引用不以斜杠字符开头的称为相对路径引用。
href="foo/bar.html"
是一个相对引用,特别是相对路径引用href="/foo/bar.html"
是具有绝对路径的相对参考href="http://example.com/foo/bar.html"
是绝对URIhref="//example.com/foo/bar.html"
是网络路径参考
以两个斜杠字符开头的相对引用称为网络路径引用;这样的参考文献很少被使用。
"绝对URL包含大量信息,这些信息可能已经从基础文档的检索上下文中知道,包括方案、网络位置和URL路径的部分"
https://www.rfc-editor.org/rfc/rfc1808
数字(2)是绝对路径,(3)是绝对URL。
我喜欢这里的W3描述:
如果解析URL会得到相同的输出,则URL是绝对URL不管它是相对于什么解析的,并且该输出不是失败。
它没有提出方案、路径或任何其他类似的概念,但基本上只是说相同的输入总是带来相同的输出。你只能这么说#3。
不过,我不会太在意技术细节——如果你的世界是网站,#2仍然是绝对的。同样,如果你的宇宙是一个方案,那么像//example.com/foo/bar.html
这样的东西是绝对的。我认为从开发人员的角度来看,这些情况下的"绝对"一词仍然有意义。
我听说的#2的术语是"根相对"。我认为这是一个有用的定义,因为它的含义在措辞中很清楚,很容易将其与#1和#3区分开来。
RFC 3986(URI通用语法)在4.3节中指定。绝对URI以下规则:
absolute-URI = scheme ":" hier-part [ "?" query ]
因此,#2不是绝对URI
我相信(2)也是一个相关URL,(3)是一个绝对URL。
http://kb.iu.edu/data/abwp.html显示了一些示例。
Onhttp://www.wisegeek.com/what-is-an-absolute-url.htm,它是这样解释的:
"绝对URL提供完整的位置信息。它以http://开头,然后继续,包括每个细节。这意味着,如果网站管理员更改原始文件的位置,绝对URL规范会找到图像,而相对URL规范不会。"
只有#3符合绝对URL的定义。1&2是相对URL。
相对URL(在[RFC1808]中定义)不包含任何协议或机器信息,其路径通常指与当前文档位于同一机器上的HTML文档。相对URL可能包含相对路径组件(".."表示父位置),也可能是片段URL。来源:http://www.w3.org/TR/WD-html40-970708/htmlweb.html
如果解析URL会得到相同的输出,而不管它是相对于什么解析的,并且该输出不是失败的,那么URL就是绝对URL。来源:http://www.w3.org/TR/url/