人们谈论 网址S, URIs和 瓮好像他们是不同的东西,但肉眼看起来一样。
它们之间有什么区别?
人们谈论 网址S, URIs和 瓮好像他们是不同的东西,但肉眼看起来一样。
它们之间有什么区别?
从 RFC 3986:
URI可以进一步分类为定位符,名称或两者。该 术语“统一资源定位符”(URL)是指URI的子集 除了识别资源外,还提供了一种方法 通过描述其主要访问机制来定位资源 (例如,其网络“位置”)。术语“统一资源名称” 历史上一直使用(URN)来指代两者下的URI “urn”方案[RFC2141],它们必须保持全球唯一性 即使资源不再存在或变得存在,也会持续存在 不可用,以及具有名称属性的任何其他URI。
因此所有URL都是URI(实际上并不完全 - 见下文),并且所有URN都是URI - 但URN和URL是不同的,因此您不能说所有URI都是URL。
编辑:我以前认为所有的URL都是有效的URI,但根据评论:
不 “所有网址都是URI”。这取决于RFC的解释。例如,在Java中,URI解析器不喜欢
[
要么]
那是因为规范说“不应该”而不是“不应该”。
不幸的是,这使得水更加混乱。
如果你还没有读过 罗杰帕特的回答,我也建议这样做。
URI确定 和 网址找到了;然而, 定位器也是标识符,因此每个URL也是一个URI,但有些URI不是URL。
这是我的名字,这是一个标识符。 它就像一个URI,但不能是一个URL,因为它不会告诉你我的位置或如何联系我。 在这种情况下,它也恰好在美国仅识别至少5个其他人。
这是一个定位器,它是该物理位置的标识符。 它就像一个URL和URI(因为所有的URL都是URI),也标识了我 间接 作为“......的居民”。 在这种情况下,它唯一地识别我,但如果我得到一个室友,那将会改变。
我说“喜欢”,因为这些示例不遵循所需的语法。
从 维基百科:
在计算中,统一资源定位符(URL)是统一资源标识符(URI)的子集,其指定所识别资源可用的位置以及用于检索它的机制。 在流行的用法和许多技术文档和口头讨论中,它经常被错误地用作URI的同义词,... [强调我的]
由于这种常见的混淆,许多产品和文档错误地使用一个术语而不是另一个术语,分配它们自己的区别,或者同义地使用它们。
我的名字罗杰帕特可能就像一个 瓮 (统一资源名称),除了那些 受到更多监管 并且意图是独一无二的 都 空间和时间。
因为我目前与其他人分享这个名字,所以它不是全球唯一的,也不适合作为URN。然而,即使没有其他家庭使用这个名字,我也以我的祖父的名字命名,所以它在时间上仍然不会是独一无二的。即便如此 那 事实并非如此,在我之后命名我的后代的可能性使其不适合作为URN。
URN与此刚性唯一性约束中的URL不同,即使它们都共享URI的语法。
URI是使用短数字,字母和符号标识文档的标准。它们的定义是 RFC 3986 - 统一资源标识符(URI):通用语法。 URL,URN和URC都是 类型 的URI。
包含有关如何从其位置获取资源的信息。例如:
http://example.com/mypage.html
ftp://example.com/download.zip
mailto:user@example.com
file:///home/user/file.txt
tel:1-888-555-5555
http://example.com/resource?foo=bar#fragment
/other/link.html
(相对URL,仅在其他URL的上下文中有用)URL始终以协议开头(http
)并且通常包含网络主机名等信息(example.com
)并且经常是文件路径(/foo/mypage.html
)。 URL可以具有查询参数和片段标识符。
通过唯一且持久的名称标识资源,但不一定告诉您如何在Internet上找到它。它通常以前缀开头 urn:
例如:
urn:isbn:0451450523
通过其ISBN号识别书籍。urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66
全球唯一标识符urn:publishing:book
- 一个XML名称空间,用于将文档标识为一种书籍。URN可以识别想法和概念。它们不仅限于识别文件。当URN表示文档时,它可以通过“解析器”转换为URL。然后可以从URL下载该文档。
指向有关文档的元数据而不是文档本身。 URC的一个示例是指向页面的HTML源代码,例如: view-source:http://example.com/
数据可以直接放入URI,而不是将其定位在互联网上或命名。一个例子是 data:,Hello%20World
。
HTML的W3规范说明了 href
一个锚标记 可以包含URI,而不仅仅是URL。你应该可以放入一个URN,如 <a href="urn:isbn:0451450523">
。然后,您的浏览器会将该URN解析为URL并为您下载该书。
不是我所知道的,但是现代网络浏览器确实实现了数据URI方案。
不。相对和绝对URL都是URL(和URI)。
否。带有和不带查询参数的URL都是URL(和URI)。
没有。带有和不带有片段标识符的URL都是URL(和URI)。
不会.URL被定义为URI的严格子集。如果解析器允许URL中的字符但不允许URI中的字符,则解析器中存在错误。规范详细说明了URL和URI的哪些部分允许使用哪些字符。某些字符可能仅允许在URL的某些部分中使用,但仅字符不是URL和URI之间的差异。
是。 W3C意识到这有很多混乱。他们发了一个 URI澄清文档 这表示现在可以互换地使用术语URL和URI(表示URI)。将URI严格分段为不同类型(如URL,URN和URC)不再有用。
URN的定义现在比我上面所说的更宽松。该 关于URI的最新RFC 说任何URI现在都可以是URN(无论它是否以 urn:
)只要它具有“名称的属性”。即:即使资源不再存在或变得不可用,它也是全局唯一且持久的。示例:HTML文档类型中使用的URI,例如 http://www.w3.org/TR/html4/strict.dtd
。即使w3.org网站上的页面被删除,该URI仍会继续命名HTML4过渡文档类型。
综上所述: URI标识,URL标识和定位。
考虑莎士比亚戏剧的特定版本 罗密欧与朱丽叶,您的家庭网络上有数字副本。
您可以将文本标识为 urn:isbn:0-486-27557-4
。
这将是一个URI,但更具体地说是一个 瓮* 因为它 命名文本。
您还可以将文本标识为 file://hostname/sharename/RomeoAndJuliet.pdf
。
这也是一个URI,但更具体地说是一个 网址 因为它 找到文本。
*统一资源名称
(请注意,我的示例改编自 维基百科)
这些是一些写得很好但很冗长的答案。这是区别 就CodeIgniter而言:
网址 - http://example.com/some/page.html
URI - /some/page.html
简而言之,URL是在任何地方识别任何资源的完整方式,可以使用不同的协议,如FTP,HTTP,SCP等。
URI是当前域上的资源,因此需要较少的信息。
在CodeIgniter使用单词URL或URI的每个实例中,这是他们所讨论的差异,尽管在网络的宏观方案中,它并非100%正确。
这是我作为网络专业人士遇到的最令人困惑且可能无关的话题之一。
据我了解,URI是一种事物的描述,遵循可接受的格式,可以定义某事物的唯一名称(标识)或其位置。
有两个基本子集 - URL,用于定义位置(尤其是用于查找网页的浏览器)和URN,用于定义某些内容的唯一名称。
我倾向于认为URN与GUID类似。它们只是一种标准化的方法,可以为事物提供唯一的名称。就像在使用公司名称的名称空间声明中一样 - 它不像是某个资源位于服务器上某个地方以对应于该行文本 - 它只是唯一地标识某些内容。
我也倾向于完全避免使用术语URI并仅在URL或URN方面讨论事情,因为它会引起很多混乱。我们应该真正尝试为人们回答的问题不是语义,而是在遇到条款时如何确定是否存在任何实际差异会改变编程情况的方法。例如,如果有人在谈话中纠正我,并且说:“哦,这不是一个URL它是一个URI”我知道他们已经充满了它。如果有人说“我们正在使用URN来定义资源”,我更有可能理解我们只是将其命名为唯一,而不是将其定位在服务器上。
如果我离开基地 - 请告诉我!
首先让你的思绪摆脱困惑,并把它简单化,你就会理解。
URI =>统一资源标识符 标识资源i-e位置,名称或两者的完整地址。
URL =>统一资源定位器 标识资源的位置。
URN =>统一资源名称 标识资源的名称
例
我们有地址 https://www.google.com/folder/page.html 哪里,
URI(统一资源标识符)=> https://www.google.com/folder/page.html
URL(统一资源定位符)=> https://www.google.com/
URN(统一资源名称)=> /folder/page.html
URI =>(URL + URN)或仅限URL或仅限URN
URI => http://en.wikipedia.org/wiki/Uniform_Resource_Identifier
URL是URI的子集(也包含URN)。
基本上,URI是一般标识符,其中URL指定位置,URN指定名称。
在考虑URI时我喜欢使用的另一个例子是XML文档的xmlns属性:
<rootElement xmlns:myPrefix="com.mycompany.mynode">
<myPrefix:aNode>some text</myPrefix:aNode>
</rootElement>
在这种情况下,com.mycompany.mynode将是一个URI,它唯一地标识在我的XML文档中使用它的所有元素的“myPrefix”命名空间。这不是URL,因为它仅用于识别,而不是用于定位本身。
标识符=名称+位置
每个网址(üniform [Resource 大号ocator)是一个URI(üniform [Resource 一世dentifier),抽象地说,但每个URI都不是URL。 URI的另一个子类别是URN(üniform [Resource ñame),这是一个命名资源,但没有指定如何定位它们,如mailto,news,ISBN是URI。
URN的语法: [scheme:]scheme-specific-part[#fragment]
例子:
邮寄地址:java-net@java.sun.com
新闻:comp.lang.java
金塔:ISBN:096139210x
URL语法: [scheme:][//authority][path][?query][#fragment]
例子:
http://java.sun.com/j2se/1.3/
文档/导向/集合/ designfaq.html#28
../../../demo/jfc/SwingSet2/src/SwingSet2.java
文件://host/dir/myfile.txt
比喻:
联系到某人:驾驶(协议其他人短信,电子邮件,电话),地址(主机名,其他电话号码,电子邮件)和人名(具有相对路径的对象名称)。