31 题: URI,URL和URN有什么区别?

在...创建的问题 Sat, Jul 9, 2016 12:00 AM

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

它们之间有什么区别?

    
4112
  1. URL比URI更具体。
    2009-12-31 07:09:09Z
  2. Tor网站管理员接受了这个问题: URI和URL有什么区别
    2012-12-21 10:14:48Z
  3. Mini Venn图:( URIs ( URLs ) )
    2014-11-13 15:20:31Z
  4. 关于URI与URL似乎仍然存在很多混淆,即使那些试图回答这个问题的人也是如此。每个人都可以看到非URI的URL的实际示例,不是URL的URI示例,以及URL URI的示例。
    2015-02-08 18:43:00Z
  5. 凯茜:“这是你的狗吗?”鲍勃:“把他称为犬是更正确的。”凯西:“不,他是一只狗。你,先生,是一个学究。”
    2015-07-20 18:49:26Z
  6. 醇>
    30答案                              30 跨度>                         

    来自 RFC 3986

      

    URI可以进一步分类为定位符,名称或两者。该      术语“统一资源定位符”(URL)是指URI的子集      除了识别资源外,还提供了一种方法      通过描述其主要访问机制来定位资源      (例如,其网络“位置”)。术语“统一资源名称”      历史上一直使用(URN)来指代两者下的URI      “urn”计划 [RFC2141] ,这些计划必须保持全球唯一性      即使资源不再存在或变得存在,也会持续存在      不可用,以及具有名称属性的任何其他URI。

    因此所有URL都是URI(实际上并不完全 - 见下文),并且所有URN都是URI - 但URN和URL是不同的,因此您不能说所有URI都是URL。

    编辑:我之前认为所有网址都是有效的URI,但根据评论:

      

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

    不幸的是,这让水更加混乱。

    如果您尚未阅读 Roger Pate的答案,我建议您也这样做。

        
    1656
    2018-12-28 07:59:07Z
    1. 只有urn:scheme的URI才是URN。 URI可以是经典URL,URN,也可以只是不以“urn:”开头的URI,也不是指资源的位置。
      2008-10-06 21:38:57Z
    2. 请注意RFC 2396很久以前已被RFC 3986淘汰(但这不会改变事实...)
      2010-03-11 12:20:46Z
    3. 所有网址都是URI ”。这取决于RFC的解释。例如,在Java中,URI解析器不喜欢[],这是因为规范说“不应该”而不是“不应该”。
      2013-05-16 00:47:40Z
    4. @ AdamGent:RFC 3986 1.1.3:“URI可以进一步分类为定位符,名称或两者。”因此,如果URL是一种特殊的URI,则意味着每个URL都是一个URI。不是吗?
      2013-06-16 23:32:09Z
    5. @ AdamGent:这听起来像是Java实现的怪癖,而不是规范性的。 java.net.URI doc 本身说“每个网址抽象地说,它是一个URI,但不是每个URI都是一个URL“。并且java.net.URL通过将主机名解析为IP地址来检查URL的相等性(这在一开始就与RFC 3986 sec 6不一致,并打破了虚拟主机)。我认为这只是意味着Java标准库有一些不一致的类行为。
      2014-03-11 05:00:37Z
    6. 醇>

    URI 识别 网址找到;但是,定位器也是标识符,因此每个URL也是一个URI,但是有些URI不是URL。

    实施例

    • Roger Pate

    这是我的名字,这是一个标识符。 它就像一个URI,但不能是一个URL,因为它不会告诉你我的位置或如何联系我。 在这种情况下,它也恰好在美国仅识别至少5个其他人。

    • 4914 West Bay Street,Nassau,Bahamas

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

    我说“喜欢”,因为这些示例不符合所需的语法。

    流行的混乱

    来自维基百科

      

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

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

    的URN

    我的名字Roger Pate可能像 URN (统一资源名称),除了这些是受到更多监管,并且在 空间和时间方面都是独一无二的。

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

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

        
    3725
    2017-05-23 12:10:45Z
    1. URNs are different from URLs in this rigid uniqueness constraint这是否意味着网址不能唯一标识某个位置?
      2013-07-11 19:30:36Z
    2. 罗杰的回答提供了良好的实用建议。对于官方回答,我去了W3C,发布了“ URI,URL和URN:澄清和建议“在2001年。简而言之,W3C说现代观点是一切都是一个URI。 URL是一个非正式的概念,而不是一个正式的概念。这种混淆可以追溯到“经典观点”,它试图严格区分URI的类别(其中URL是一个类别)。
      2013-07-26 23:23:24Z
    3. ..统一资源定位符(URL)..指定已识别资源的可用位置以及检索它的机制换句话说,没有“相对”URL这样的东西?
      2014-04-28 07:51:38Z
    4. 是“earth128:Edward-de-Leau /6000000000569063853”(多重多元宇宙的独特之处)URN,URL还是URI?
      2014-09-20 03:06:25Z
    5. @ edelwater:我想这是一个uri,因为它只能识别你,但没有说明如何找到你,除非你的意思是earth128是行星间旅行的媒介:)
      2015-04-27 10:57:23Z
    6. 醇>

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

    URN - 统一资源名称

    通过唯一且持久的名称标识资源,但不一定告诉您如何在Internet上找到它。它通常以前缀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都是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文档类型中使用的URI,例如http://www.w3.org/TR/html4/strict.dtd。即使w3.org网站上的页面被删除,该URI仍将继续命名HTML4过渡文档类型。


        
    584
    2019-02-15 17:51:59Z
    1. 是“C:\myfile”的URI,URL还是URN?或者都没有。
      2015-05-18 07:36:09Z
    2. 文件路径不是URL或URI,除非您在其上放置file://前缀。虽然浏览器通常会处理非URL格式的文件路径。 Mozilla发布文件网址的测试用例
      2015-06-08 16:19:43Z
    3. 为什么它们“统一”?
      2015-07-05 01:30:56Z
    4. 2015-07-05 02:11:57Z
    5. 这个答案更容易理解。我可以看到URL和&amp;的真实例子的清晰图片。瓮。任何人都可以阅读更多相关信息...... danielmiessler.com/study/url-uri
      2017-05-22 07:41:58Z
    6. 醇>

    总结: URI标识,URL标识并定位。

    考虑一下特定版本的莎士比亚戏剧罗密欧与朱丽叶,你的家庭网络上有数码副本。

    您可以将文本标识为urn:isbn:0-486-27557-4
    这将是一个URI,但更具体地说是 URN *因为它为文字命名

    您还可以将文本标识为file://hostname/sharename/RomeoAndJuliet.pdf
    这也是一个URI,但更具体地说是网址,因为它找到了文字

    *统一资源名称

    (请注意,我的示例改编自维基百科     

    246
    2016-04-17 11:53:50Z
    1. 注意实际的URN(看看它与URL的比较)是有帮助的:urn:isbn:0-486-27557-4
      2009-12-31 18:15:35Z
    2. @ Michael - 据我所知,ISBN 0486275574也为文本命名,因此有资格成为URN。我选择了一种我认为对读者来说更熟悉的格式。
      2009-12-31 18:47:09Z
    3. 那么说文件的哈希(例如SHA1)可能是该文件的URN是否有意义?
      2016-06-06 14:01:14Z
    4. @ johnsimer不要这么认为,因为你可能在同一台计算机上有一个文件的副本,这会产生相同的哈希,因此它不是唯一的。
      2018-02-06 19:34:30Z
    5. 醇>

    这些是一些写得很好但又冗长的答案。就CodeIgniter而言,的区别在于

    网址 - http://example.com/some/page.html

    URI - /some/page.html

    简而言之,URL是在任何地方识别任何资源的完整方式,可以使用不同的协议,如FTP,HTTP,SCP等。

    URI是当前域上的资源,因此它需要的信息较少。

    在CodeIgniter使用单词URL或URI的每个实例中,这是他们所讨论的差异,尽管在网络的宏观方案中,它并非100%正确。

        
    135
    2015-03-30 23:53:15Z
    1. 这个答案可能过于简化,但请看他的问题的背景。关于XML命名空间的问题对他来说会更有帮助!
      2009-12-31 12:18:19Z
    2. 这个答案不仅错误而且积极误导。 两个示例都是URL。并且由于每个URL也是URI,这意味着两个示例都是URI。为了演示URI和URL之间的区别,这完全没用。
      2009-12-31 12:40:57Z
    3. 就CodeIgniter而言,这是不同的。在每个实例中,他们使用URL或URI这个词,这是他们所谈论的差异。因此,在网络的宏大计划中,它不是100%正确,但在OP的问题范围内(CodeIgniter的差异),这个答案是完全正确的。
      2010-01-11 11:13:00Z
    4. 这是错误的。 @JörgWMittag主要是关键点。 URL是URI,它们是“完全合格的”;所以这个答案中的“URL”都是。但/some/page.html不是URI。它是一个“relative-ref”,它是一种“URI-reference”。结合基URI上下文,它可以解析为URI,但本身不是URI。请参见 RFC 3986的第4.1节。 CodeIgniter可能使用了错误的术语,应该调出来; Q(当前编辑的)不构成CodeIgniter特定的。
      2014-03-11 05:33:19Z
    5. 对于未来读过这些评论并且和我一样困惑的人:这个问题的答案没有发布。这个问题从未与CodeIgniter有任何关系。有一个重复的问题,特别提到CodeIgniter已关闭,并将其所有答案迁移到这个问题。这个答案是从旧的封闭问题转移到这个受保护的问题之一。即便如此,我的回答也是误导。我对它进行了贬低 - 其他人应该这样做,因为在新家里,这是错误的。作者应删除它或合并即将撤消。
      2014-10-06 17:33:08Z
    6. 醇>

    首先让您的思绪摆脱困惑,并将其简单化,您将会理解。

    URI =&gt;统一资源标识符 标识资源i-e位置,名称或两者的完整地址。

    网址=&gt;统一资源定位器 标识资源的位置。

    URN =&gt;统一资源名称 标识资源的名称

    示例强>

    我们有 https://www.google.com/folder/page。 html 在哪里,

    URI(统一资源标识符)=&gt; https://www.google.com/folder/page.html

    URL(统一资源定位符)=&gt; https://www.google.com/

    URN(统一资源名称)=&gt; /folder/page.html

    URI =&gt; (URL + URN)或仅限URL或仅限URN

        
    78
    2018-02-24 09:40:44Z

    已经发布的答案的一小部分,这里是维恩的图表来总结理论(来自Prateek Joshi的美丽解释):

    一个例子(也来自Prateek的网站):

        
    63
    2014-10-16 17:46:51Z
    1. 我认为第二个插图不正确。按照规范 url.spec.whatwg.org/#url-writing 一个URL必须写为相对URL或绝对URL,可选地后跟“#”和片段。因此,#posts片段标识符可以是URL
      的一部分
      2014-12-04 14:57:40Z
    2. 这是完全错误的
      2015-02-03 11:10:53Z
    3. 这两个插图相互矛盾。
      2015-06-28 00:22:00Z
    4. 醇>

    这是我作为网络专业人士遇到的最令人困惑且可能无关的主题之一。

    根据我的理解,URI是一种事物的描述,遵循可接受的格式,可以定义某事物的唯一名称(标识)及其位置。

    有两个基本子集 - URL,用于定义位置(特别是对于试图查找网页的浏览器)和URN,它们定义了某些内容的唯一名称。

    我倾向于认为URN与GUID类似。它们只是一种标准化的方法,可以为事物提供唯一的名称。就像在使用公司名称的名称空间声明中一样 - 它不像是某个资源位于服务器上某个地方以对应于该行文本 - 它只是唯一地标识某些内容。

    我也倾向于完全避免使用术语URI,并仅在URL或URN方面讨论事情,因为它会导致如此多的混淆。我们应该真正尝试为人们回答的问题不是语义,而是在遇到这些术语时如何确定是否存在任何实际差异会改变编程情况的方法。例如,如果有人在谈话中纠正我,并且说:“哦,这不是一个URL它是一个URI”我知道他们已经充满了它。如果有人说“我们正在使用URN定义资源”,我更有可能理解我们只是将其命名为唯一的,而不是将其定位在服务器上。

    如果我离开基地 - 请告诉我!

        
    53
    2011-12-01 13:35:08Z
    1. 不,我认为你是对的。 URI vs URL vs URL vs URI-ref等的语义对大多数开发人员来说都是无用的,只是因为它推动了无意义(非生产性,无关紧要的决策)辩论。如果Google API使用的是redirect_url而不是redirect_uri,那么有人会非常关心吗?
      2015-04-06 14:33:12Z
    2. 醇>
      

    标识符=名称+位置

    每个网址( U niform R esource L ocator)都是一个URI( U niform R esource I dentifier),抽象地说,但每个URI都不是URL。 URI的另一个子类别是URN( U niform R esource N ame),这是一个命名资源,但没有指定如何定位他们,像mailto,新闻,ISBN是URI。 来源

    URN:

    网址:

    • 网址格式:[scheme]://[Domain][Port]/[path]?[queryString]#[fragmentId]
    • :,//,?和#代表自己。
    • 方案是https,ftp,gopher,mailto,news,telnet,f​​ile,man,info,whatis,ldap ......
    • 实施例:

    打个比方:强>结果 联系到某人:驾驶(协议其他短信,电子邮件,电话),地址(主机名,其他电话号码,电子邮件)和人名(具有相对路径的对象名称)。

        
    44
    2018-09-29 02:34:31Z
    1. 次要狡辩:[domain]和[port]之间应该有一个冒号。 IE:example.com:1234
      2019-03-01 17:03:43Z
    2. 醇>

    URI =&gt; http://en.wikipedia.org/wiki/Uniform_Resource_Identifier

    URL是URI的子集(也包含URN)。

    基本上,URI是一般标识符,其中URL指定位置,URN指定名称。

        
    42
    2008-10-06 21:30:16Z
    1. URL不是URI的真正子集。您可以使用字符[]创建vaid URL,但不能创建URI。
      2013-05-16 00:43:14Z
    2. 方括号在URI或URL中无效。请参阅此问题,其中有许多参考规范: URL中是否允许使用方括号?一>。当方括号出现时i或者,它们应该被编码。
      2015-07-25 10:44:12Z
    3. 醇>

    我在考虑URI时喜欢使用的另一个例子是XML文档的xmlns属性:

     
    <rootElement xmlns:myPrefix="com.mycompany.mynode">
        <myPrefix:aNode>some text</myPrefix:aNode>
    </rootElement>
    

    在这种情况下,com.mycompany.mynode将是一个URI,它唯一地标识在我的XML文档中使用它的所有元素的“myPrefix”命名空间。这不是URL,因为它仅用于识别,而不是用于定位本身。

        
    35
    2014-04-16 23:16:38Z

    由于难以清楚地区分URI和URL,据我所知,W3C在URI和URL之间不再有任何区别( http://www.w3.org/Addressing/)。

        
    28
    2013-08-08 19:57:29Z
    1. 也许我错过了那个部分,但我没有在提供的链接中看到任何参考,删除了URL和URI之间的区别,只承认混乱和想要的规格错误地引用要更新为引用URI的URL。
      2018-01-10 17:28:45Z
    2. 醇>

    他们是一回事。 URI是URL的泛化。最初,URI计划分为URL(地址)和URN(名称),但是URL和URI之间没有什么区别,http URI被用作命名空间,即使它们实际上没有找到任何资源。

        
    26
    2008-10-06 21:45:31Z
    1. 我认为这是相反的方式。 URL指的是具体对象,URI可以引用该概念或其他任何内容。
      2008-10-06 21:30:00Z
    2. URL定位资源,是一种标识资源的URI。
      2008-10-06 21:33:40Z
    3. 它们是相同的,因为URL的定义随着时间的推移而发生了变化。 URL曾经是特定类型的URI,但由于引起的混淆,W3C将URL重新定义为URI。
      2015-04-17 10:11:02Z
    4. 这就是我所说的。
      2015-04-17 18:59:29Z
    5. 醇>

      

    URI,URL,URN

    如上图所示,这里有三个不同的组成部分。在讨论这些问题时,通常最好去消息来源,所以这里是Tim Berners-Lee等人的一个例子。人。在 RFC 3986:统一资源标识符(URI):通用语法:

      

    统一资源标识符(URI)是一个紧凑的序列   标识抽象或物理资源的字符。

         

    URI可以进一步分类为定位符,名称或两者。该   术语“统一资源定位符”(URL)是指URI的子集   除了识别资源外,还提供了一种方法   通过描述资源来定位资源y访问机制   (例如,其网络“位置”)。

        
    23
    2016-06-02 11:16:26Z

    URI是URL和URN的超类。维基百科有一个关于它们的精彩文章,其中包含指向正确的RFC集的链接。

        
    20
    2008-10-06 21:30:40Z

    网址

    URL是URI的特化,用于定义特定资源的网络位置。与URN不同,URL定义了如何获取资源。我们每天都以http://example.com等形式使用网址。但网址不一定是HTTP网址,也可以是ftp://example.com等。

    URI 强>

    URI按位置或名称或两者标识资源。通常,我们大多数人使用URI来定义资源的位置。 URI可以通过名称和位置来识别资源这一事实在我看来引起了很多混乱。 URI有两个称为URL和URN的特化。

    网址和URI之间的差异

    URI是某些资源的标识符,但URL会为您提供获取该资源的具体信息。 URI是一个URL,正如一位评论者所指出的,现在认为在描述应用程序时使用URL是不正确的。通常,如果URL描述资源的位置和名称,则使用的术语是URI。由于这通常是我们大多数人每天都遇到的情况,因此URI是正确的术语。

        
    16
    2014-06-17 19:06:04Z

    维基百科将在此提供您需要的所有信息。引自 http://en.wikipedia.org/wiki/URI

      

    URL是一种URI,除了标识资源之外,还提供了通过描述其主要访问机制或网络“位置”来处理或获取资源表示的方法。

        
    16
    2014-06-17 19:09:35Z

    根据 RFC 3986 ,URI由以下部分组成:

     
    scheme://authority/path?query
    

    URI描述了在服务器( authority )上访问资源(路径)或应用程序(查询)的协议。

    所有URL都是URI,所有URN都是URI,但所有URI都不是URL。

    请参阅更多详情:

      

    维基百科

        
    15
    2016-07-09 17:46:26Z
    1. 这并没有教会我至少6年以来其他答案未涵盖的任何内容,哪些更完整,实际上试图解释如何区分URI和URL。
      2014-09-06 11:06:06Z
    2. 重要的是要注意图像是维恩图,即使它看起来不像典型图像。我见过人们试图把它解释为“URL的一部分”。此图表表示URI以URL开头并以URN结尾。
      2015-04-17 10:03:57Z
    3. 醇>

    URI按位置或名称或两者标识资源。通常,我们大多数人使用URI来定义资源的位置。 URI可以通过名称和位置来识别资源这一事实在我看来引起了很多混乱。 URI有两个称为URL和URN的特化。

    URL是URI的特化,用于定义特定资源的网络位置。与URN不同,URL定义了如何获取资源。我们每天都会以 http://stackoverflow.com 等形式使用网址。但网址不一定是HTTP网址,它可以是ftp://example.com等。

        
    13
    2015-03-04 21:03:21Z

    尽管严格定义了术语URI和URL,但很多人将这些术语用于除定义之外的其他内容。

    我们以Apache为例。如果从Apache服务器请求 http://example.com/foo ,您将拥有以下环境变量设置:

    •  REDIRECT_URL/foo
    •  REQUEST_URI/foo

    启用mod_rewrite后,您还将拥有以下变量:

    •  REDIRECT_SCRIPT_URL/foo
    •  REDIRECT_SCRIPT_URIhttp://example.com/foo
    •  SCRIPT_URL/foo
    •  SCRIPT_URIhttp://example.com/foo

    这可能是造成某些混淆的原因。

        
    11
    2009-12-31 09:57:27Z

    请参见此文档。具体来说,

      

    URL是一种URI,它通过其主要访问机制(例如,其网络“位置”)的表示来标识资源,而不是通过它可能具有的某些其他属性来标识资源。

    这真的不是一个非常明确的术语。

        
    10
    2009-12-31 06:33:44Z

    阅读完帖子后,我发现了一些非常相关的评论。简而言之,URL和URI定义之间的混淆部分取决于哪个定义取决于哪个以及在软件开发中非正式使用单词URI。

    根据定义,URL是URI [RFC2396]的子集。 URI包含URN和URL。 URI和URL都有自己特定的语法,赋予它们URI或URL的状态。 URN用于唯一标识资源,而URL用于定位资源。请注意,资源可以包含多个URL,但只能包含一个URN。[RFC2611]

    作为Web开发人员和程序员,我们几乎总是关注URL,因此关注URI。现在,URL被明确定义为具有所有部件方案:scheme-specific-part,例如 https://stackoverflow.com/questions。这是一个URL,它也是一个URI。现在考虑页面中嵌入的相对链接,例如../index.html。根据定义,这不再是URL。它仍然被称为“URI参考”[RFC2396]。

    我相信当使用单词URI来引用相对路径时,“URI-reference”实际上就是被考虑的内容。非正式地,软件系统使用URI来指代绝对地址的相对路径和URL。所以从这个意义上讲,相对路径不再是URL,而是URI。

        
    10
    2017-05-23 11:47:34Z

    这是我的简化:

    URN:唯一的资源名称,即“what”(例如urn:issn:1234-5678)。这是唯一的..因为没有两个不同的文档可以有相同的urn。有点像“uuid”

    网址:“在哪里”找到它(例如 https://google.com/pub? issnid = 1234-5678 ..或 ftp://somesite.com/doc8.pdf

    URI:可以是URN或URL。这种模糊定义归功于W3C和IETF制作的RFC 3986。

    多年来,URI的定义发生了变化,因此让大多数人感到困惑是有道理的。但是,您现在可以放心,因为您可以参考 http://somesite.com/something 无论是URL还是URI ......无论如何,你都是正确的(至少暂时无论如何......)

        
    9
    2013-01-09 14:26:51Z

    我想知道同样的事情,我发现了这个: http://docs.kohanaphp的.com /助手/网址

    您可以使用url::current()方法查看明确的示例。 如果你有网址http://example.com/kohana/index.php/welcome/home.html?query=string,那么使用url:current()可以获得 URI ,根据文档,它是: welcome /home

        
    9
    2015-04-17 10:08:39Z
    1. 这个答案是错误的。 URI不是URL的一部分。相反,URL是一种URI。此外,这个答案中的链接被打破了(我找不到合适的替代品。)
      2015-04-17 10:07:50Z
    2. 醇>

    URI源于需要以统一和连贯的方式识别Web上的资源,和其他Internet资源,例如电子邮箱。因此,可以引入一种新类型的小部件: URI来识别小部件资源或使用 tel: URI来使网络链接导致电话呼叫在被调用时被制作。

    某些URI提供了查找资源的信息(例如DNS主机名和该计算机上的路径),而某些URI则用作纯资源名称。 网址保留用于是资源定位器的标识符,包括“http”网址,例如 http://stackoverflow.com ,用于标识主机上给定路径的网页。另一个例子是'mailto'URL,例如 mailto:fred@mail.org ,它标识给定地址的邮箱。

    URN 是用作纯资源名称而不是定位符的URI。例如,URI: mid:0E4FC272-5C02-11D9-B115-000A95B55BC8@stackoverflow.com 是一个URN,用于在“Message-Id”字段中标识包含它的电子邮件消息。 URI用于区分该消息与任何其他电子邮件消息。但它本身并不在任何商店提供消息的地址。

        
    7
    2012-03-10 17:30:22Z

    易于解释:

    让我们假设以下

    URI是您的姓名

    网址是您的姓名地址,以便与您沟通。

    • 我的名字是Loyola

      Loyola是URI

    • 我的地址是TN,Chennai 600001。

    TN,Chennai 600 001,Loyola是URL

    希望你明白,

    现在让我们看一个精确的例子

    http://www.google.com/fistpage.html 强>

    在上面,您可以与名为 firstpage.html 的页面进行通信 ( URI )使用以下 http://www.google.com/fistpage.html (适用的网址)。

    因此URI是URL的子集,但反之亦然。

        
    6
    2015-03-18 09:08:17Z
    1. 这个答案具有误导性。引自维基百科“A Uniform资源名称(URN)的功能类似于人名,而统一资源定位符(URL)类似于该人的街道地址。换句话说:URN定义了一个项目的标识,而URL提供了一种查找它的方法。“URN和URL都是URI。
      2015-12-28 00:54:13Z
    2. 醇>

    为了回答这个问题,我将依靠我修改为另一个问题的答案。 URI的一个很好的例子是您如何识别Amazon S3资源。我们来看看:

    s3://www-example-com/index.html [图1] 强> 子>

    我创建的

    的缓存副本

    http://www.example.com/index.html [图2] 强> 子>

    在亚马逊的 S3-US-West-2 数据中心。

    即使StackOverflow允许我超链接到s3:// 协议 方案,它对定位资源没有任何好处。因为标识 资源无花果。 1 是有效的URI。它也是一个有效的URN,因为Amazon要求数据包(它们的URI的authority部分的术语)在数据中心之间是唯一的。找到它时有用,但它不表示数据中心。因此它不能用作URL。

    那么,在这种情况下,URI,URL和URN有何不同?

    注意: RFC 3986将URI定义为scheme://authority/path?query#fragment

        
    6
    2017-10-02 03:16:59Z

    统一资源标识符(URI)是一个标识Internet资源的字符串。

    最常见的URI是标识Internet域地址的统一资源定位器(URL)。另一种不常见的URI类型是通用资源名称(URN)。

        
    4
    2014-12-03 06:19:05Z

    我找到了:


    统一资源标识符(URI)代表了一幅大图。您可以拆分URI /URI可以分类为定位器(统一资源定位符-URL),或者分类为名称(统一资源名称-URN),或者两者兼而有之。所以基本上,URN的功能就像一个人的名字,而URL则描述了该人的地址。长话短说,URN定义了一个项目的标识,而URL提供了定义查找它的方法,最后封装这两个概念就是URI

        
    4
    2016-07-09 17:46:47Z

    答案含糊不清。在Java中,它经常以这种方式使用:

    统一资源定位符(URL)是用于标识Internet资源的术语,包括方案(http,https,ftp,news等)。例如, URI,URL和a之间的区别是什么URN?

    统一资源标识符(URI)用于标识Web服务器中的单个文档:例如/questions /176264 /whats-the-uri-and-a-url

    在Java servlet中,URI经常引用没有Web应用程序的文档n上下文。

        
    0
    2017-05-23 12:10:45Z
    1. 这是绝对URL和相对URL之间的区别。它没有解释URI与URL和URN的关系。
      2012-09-08 08:43:22Z
    2. 实际上,这些都是准确的例子。在网络上,这通常是不同的。
      2013-11-11 03:49:38Z
    3. 醇>
来源放置 这里