什么是绝对URL的定义(完全限定?)

  • 本文关键字:定义 URL url nomenclature
  • 更新时间 :
  • 英文 :


链接到资源(至少)有三种方法:

  1. href="foo/bar.html"
  2. href="/foo/bar.html"
  3. href="http://example.com/foo/bar.html"

第一个是"相对url",没问题。但我看到(2)和(3)都被称为"绝对url"。哪个被正确地称为"绝对url",另一个的正确名称是什么?

(参考相关标准或其他官方文件可获得加分。)

RFC 3986定义了统一资源标识符。

以单斜杠字符开头的相对引用是
称为绝对路径参考。执行
的相对引用不以斜杠字符开头的称为相对路径引用。

  1. href="foo/bar.html"是一个相对引用,特别是相对路径引用
  2. href="/foo/bar.html"是具有绝对路径的相对参考
  3. href="http://example.com/foo/bar.html"绝对URI
  4. href="//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/

最新更新