URI,URL和URN有什么区别?

人们谈论URLURIURN就好像它们是不同的东西,但它们肉眼看起来是一样的。

它们之间有什么明显的区别?


从RFC 3986:

URI可以进一步分类为定位符,名称或两者。 术语“统一资源定位符”(URL)是指URI的子集,除了识别资源之外,还通过描述其主要访问机制(例如,其网络“位置”)来提供定位资源的手段。 术语“统一资源名称”(URN)在历史上被用于指代“urn”方案[RFC2141]下的两个URI,即使在资源不存在或变得不可用时也需要保持全球唯一性和持久性,并且到具有名称属性的任何其他URI。

所以所有的URL都是URI(实际上并不完全如下),所有的URN都是URI--但URN和URL是不同的,所以你不能说所有的URI都是URL。

编辑:我以前认为所有的URL都是有效的URI,但根据意见:

不是 “所有的URL都是URI”。 这取决于RFC的解释。 例如在Java中,URI解析器不喜欢[] ,那是因为规范说“不应该”而不是“不应该”。

不幸的是,这使得水进一步混浊。

如果你还没有阅读罗杰帕特的答案,我也建议这样做。


URI标识URL定位 ; 然而, 定位器也是标识符 ,所以每个URL也是一个URI,但是存在不是URL的URI。

例子

  • 罗杰帕特
  • 这是我的名字,这是一个标识符。 它就像一个URI,但不能成为一个URL,因为它没有告诉你我的位置或如何与我联系。 在这种情况下,仅在美国也会发现至少5个其他人。

  • 4914 West Bay Street,Nassau,Bahamas
  • 这是一个定位器,它是该物理位置的标识符。 它就像一个URL和URI(因为所有的URL都是URI),并且也间接地将我标识为“居民......”。 在这种情况下,它唯一标识了我,但如果我找到室友,情况就会改变。

    我说“like”,因为这些示例没有遵循所需的语法。

    流行的困惑

    维基百科:

    在计算中,统一资源定位符(URL)是统一资源标识符(URI)的子集,用于指定已标识资源的可用位置以及用于检索的机制。 在常用的用法和许多技术文档和口头讨论中,它经常被错误地用作URI的同义词 ,...... [强调我的]

    由于这种常见的混淆,许多产品和文档错误地使用一个术语而不是另一个术语,分配他们自己的区别或者同义使用它们。

    URN的

    我的名字Roger Pate可能就像一个URN(统一资源名称),除非那些规则更加规范,并且意图在时空上都是唯一的。

    因为我目前与其他人分享这个名字,所以它不是全球唯一的,并且不适合作为URN。 然而,即使没有其他家庭使用这个名字,我也以我的祖父的名字命名,所以它在整个时间内仍然不是唯一的。 即使情况并非如此,在我之后命名我的后代的可能性使得这不适合作为URN。

    URN与刚性唯一性约束中的URL不同,即使它们都共享URI的语法。


    URI - 统一资源标识符

    URI是使用一串简短的数字,字母和符号来识别文档的标准。 它们由RFC 3986定义 - 统一资源标识符(URI):通用语法。 URL,URN和URC是所有类型的URI。

    URL - 统一资源定位器

    包含有关如何从其位置获取资源的信息。 例如:

  • 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可能有查询参数和片段标识符。

    URN - 统一资源名称

    通过唯一和永久的名称标识资源,但不一定会告诉您如何在互联网上找到它。 它通常以前缀urn:开头urn:例如:

  • urn:isbn:0451450523通过它的ISBN编号来识别一本书。
  • urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66全球唯一标识符
  • urn:publishing:book - 将文档标识为书籍类型的XML名称空间。
  • URN可以识别想法和概念。 它们不限于识别文件。 当URN代表文档时,它可以通过“解析器”转换为URL。 然后可以从URL下载文档。

    URC - 统一资源引用

    指向关于文档的元数据而不是文档本身。 URC的一个例子是指向页面的HTML源代码,如: view-source:http://example.com/

    数据URI

    数据可以直接放置在URI中,而不是在互联网上定位或命名。 一个例子是data:,Hello%20World


    经常问的问题

    我听说我不应该再说URL了,为什么?

    HTML的W3规范指出,锚标签的href可以包含一个URI,而不仅仅是一个URL。 您应该可以放入URN,例如<a href="urn:isbn:0451450523"> 。 您的浏览器会将该URN解析为一个URL并为您下载该书。

    任何浏览器是否真的知道如何通过URN获取文档?

    不是我所知道的,但现代的网页浏览器确实实现了数据URI方案。

    URL和URI之间的区别与它的相对还是绝对有关系吗?

    不,相对和绝对URL都是URL(和URI)。

    URL和URI之间的区别与它是否具有查询参数有什么关系?

    不,有和没有查询参数的URL都是URL(和URI)。

    URL和URI之间的区别与它是否具有片段标识符有关吗?

    不可以。带和不带片段标识符的URL都是URL(和URI)。

    URL和URI之间的区别与允许的字符有什么关系?

    编号URL被定义为URI的严格子集。 如果解析器允许URL中的字符而不是URI中的字符,则解析器中存在错误。 规范详细介绍了URL和URI的哪些部分允许使用哪些字符。 某些字符只能在URL的某些部分允许使用,但字符本身并不是URL和URI之间的区别。

    但W3C现在不说URL和URI是相同的东西?

    是。 W3C意识到这有很多困惑。 他们发布了一个URI说明文件,指出现在可以交替使用术语URL和URI(意思是URI)。 将URI严格分为不同的类型(如URL,URN和URC)不再有用。

    一个URI既可以是URL又可以是URN?

    URN的定义现在比我上面陈述的要宽松。 关于URI的最新RFC指出,只要具有“名称属性”,任何URI现在都可以是URN(不管它是否以urn:开头)。 即:即使资源不存在或变得不可用,它也是全球唯一且持久的。 示例:HTML doctype中使用的URI,例如http://www.w3.org/TR/html4/strict.dtd 。 即使w3.org网站上的网页已被删除,该URI仍将继续命名HTML4过渡文档类型。


    URI / URL维恩图

    链接地址: http://www.djcxy.com/p/191.html

    上一篇: What is the difference between a URI, a URL and a URN?

    下一篇: each over an array in JavaScript?