2013-07-01 44 views
17

有(至少)三种方式链接到的资源(完全合格的?):什么是绝对URL的定义

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

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

(积分为相关标准或其他官方文件的参考资料。)

回答

30

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

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

  1. href="foo/bar.html"是一个相对的参考,特别是相对路径参考
  2. href="/foo/bar.html"是具有absolute path
  3. href="http://example.com/foo/bar.html"一个相对引用为absolute URI
  4. href="//example.com/foo/bar.html"网络路径参考

以两个斜线开头的相对参考字符被称为网络路径引用;这种引用很少使用。

+2

对于#4,同意他们很少使用,但我认为这对他们有很好的用处。同一路径上的HTTP和HTTPS托管的任何内容都将受益于此 - 避免在不需要时使用HTTPS的开销,并将其用于安全页面以避免浏览器警告。托管在CDN上的脚本就是一个很好的例子:([see this post](http://stackoverflow.com/questions/3622598/https-and-external-cdn-hosted-files/3622615#3622615)) –

+1

@JoeEnos我同意和你;这是RFC的直接引用。 –

+0

有趣的是,仅仅4年后,CDN脚本参考文献中的“网络路径引用”就已经存在。 –

1

RFC 3986URI通用语法)指定部分4.3。绝对URI以下规则:

absolute-URI = scheme ":" hier-part [ "?" query ]

因此,#2是不是一个绝对URI

1

我相信(2)也是relateive URL和(3)是一个绝对的URL。

http://kb.iu.edu/data/abwp.html显示了一些例子。

http://www.wisegeek.com/what-is-an-absolute-url.htm,它解释了它作为这样的:

“绝对URL提供了完整的位置信息,它以http://并继续,包括每一个细节,这意味着,如果网站管理员要改变的原始文件的位置,绝对的URL规范会找到图片,而相对的URL规范则不会。“

+0

我相信你基本上是正确的,但像这样的二手参考文献很容易对FUD做出贡献,这就是为什么我要求提供权威来源的参考。 –

+0

好点。下次我会考虑这一点。 – Brian

4

“绝对URL包含大量信息,这些信息可能已从基础文档检索的上下文中知道,包括方案,网络位置和URL路径的某些部分。”

http://tools.ietf.org/html/rfc1808

数(2)是绝对路径中,(3)是一个绝对URL。

1

我喜欢W3的描述找到here

URL是一个绝对的URL,如果解决它导致相同的输出 不管它是什么相对于解决,那输出不 失败。

它没有提出方案,路径或任何其他的概念,但基本上只是说相同的输入总是带来相同的输出。你只能说关于#3。

虽然我不太在意技术,但如果你的宇宙是网站,那么#2仍然是绝对的。像//example.com/foo/bar.html这样的东西是绝对的,如果你的宇宙是这个计划的话。我认为在这些情况下,“绝对”这个词从开发者的角度来看仍然是有意义的。

1

只有#3符合绝对URL的定义。 1 & 2是相对URL。

相对URL(在[RFC1808]中定义)不包含任何协议或机器信息,其路径通常指与当前文档位于同一机器上的HTML文档。相对URL可能包含相对路径组件(“..”表示父级位置),可能是片段URL。 来源:http://www.w3.org/TR/WD-html40-970708/htmlweb.html

如果解析URL,它会得到相同的输出,而不管它解析的是什么,并且该输出不是失败。 来源:http://www.w3.org/TR/url/

1

我听说#2这个词是“根相对”。我认为这是一个有用的定义,因为它的含义在措辞中很清楚,并且容易将其与#1和#3区分开来。