URI和URL之间的区别

人们谈论的URL,URI和URN的,好像他们是不同的东西,但他们看起来是一样的肉眼。

什么是它们之间的区别?

--------------解决方案-------------

从RFC 3986:

一个URI可以进一步划分为一个定位器,一个名称或者两者。 术语“统一资源定位器”(URL)是指的URI,在除了识别资源时,提供通过描述其主要的访问机制(例如,它的网络“所在地”)定位所述资源的一装置的子集。 术语“统一资源名称”(URN)在历史上曾用于指下的URI“瓮”方案[RFC2141],其需要保持全球唯一的持久性,甚至当资源不再存在或变得不可用,并使用一个名称的属性的任何其他的URI。

因此,所有的URL都是URI(其实不是很 - 见下文),并且所有的URN都是URI - 但瓮网址是不同的,所以你不能说所有的URI是URL。

编辑:我以前以为所有的URL是有效的URI,但根据评论:

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

这样模糊了水进一步,很遗憾。

如果您尚未阅读罗杰八德的回答,我建议这样做也是如此。

URI的识别 URL 定位 ; 然而, 定位器也标识符 ,所以每个URL也是一个URI,但也有URI的哪些不是网址。

示例

  • 罗杰·佩特

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

  • 4914西湾街,巴哈马拿骚

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

我说“喜欢”,因为这些例子不遵守要求的语法。

热门混乱

维基百科:

在计算中,统一资源定位符(URL)是统一资源标识符(URI),用于指定一个确定的资源是可用的机制,用于检索它的子集。 在广为使用,在许多技术文件和口头讨论它往往是错误地用作同义词的URI ... [重点煤矿]

由于这种共同的困惑,许多产品和文档错误地使用一个词,而不是其他的,转让自己的区别,或者使用它们同义词。

的URN

我的名字,罗格佩特,也能像一个URN(统一资源名),除了那些是更规范,旨在是两个空间和时间是唯一的。

因为我现在正与其他人分享这个名字,它不是全球唯一的,不会是适合作为URN。 不过,即使没有其他的家庭用这个名字,我叫我的祖父后,所以它仍然不会是跨越时空的独特。 即使这是不是这样的,以后我命名我的后代的可能性,使这个不适合作为一个URN。

的URN在这个刚性的唯一性约束不同的URL,的URI即使它们共用的语法。

总结: 一个URI标识,一个URL识别和定位。

考虑莎士比亚的戏剧罗密欧与朱丽叶 ,其中有一个数字拷贝您的家庭网络上的特定版本。

你可以找出文本urn:isbn:0-486-27557-4
这将是一个URI,但更具体的一个URN,因为它的名称的文本。

你也可以识别文本file://hostname/sharename/RomeoAndJuliet.pdf
这也将是一个URI,但更具体 URL,因为找到的文本。

(请注意,我的例子是改编自维基百科)

注:这个答案被认为是错误的,许多评论者。 你应该只考虑它在评论的讨论范围内。

这些都是一些非常写得很好,但冗长的答案。

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

URI - /some/page.html

简而言之,网址是完整的方式的任何地方indentify任何资源,并且可以具有例如FTP,HTTP SCP等不同的协议

URI是在当前域的资源,因此它需要较少的信息被发现。

这是我遇到的网络专业最令人困惑和可能不相关的话题之一。

据我了解,一个URI是某事物的描述,下面一个公认的格式,即可以定义的东西,它的位置双方或一方的唯一名称(标识)。

有两种基本的子集 - 网址,其中限定位置(尤其是在试图查找的网页的浏览器)和URN的,它定义了什么的唯一名称。

我倾向于认为URN要作为类似的GUID。 他们是一个简单的标准化方法的东西,提供独特的名字。 由于在使用一个公司的名字命名空间声明 - 它不喜欢有资源坐在一台服务器上的某个地方对应于该行文本 - 它只是唯一识别的东西。

我也倾向于完全避免术语URI和讨论的事情只有在URL或URN方面适当的,因为它会导致这么多的困惑。 我们确实应该尝试回答人们的问题是没有这么多的语义,但如何识别遇到的条款时,是否有在他们的任何实际的差异,这将改变方式,以编程的局面。 例如,如果有人纠正我谈话,说:“哦,这不是一个URL它是一个URI”我知道他们是充满了它。 如果有人说:“我们正在使用URN来定义资源的”我更容易理解,我们只将其命名为唯一的,而不是在服务器上查找它。

如果我的路要走基地 - 请让我知道!

一个小除了答案已经发布,这里的维恩的图来总结理论(从Prateek乔希美丽的说明):

URI和URL之间的区别

和实例(也来自Prateek的网站):

URI和URL之间的区别


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将是一个唯一标识“myPrefix”命名空间对于所有使用它我的XML文档中的元素的URI。 这不是一个URL,因为它仅用于标识,而不是找到东西本身。

由于困难的URI和URL之间的明确区分,只要我还记得W3C不会有所作为URI和URL(http://www.w3.org/Addressing/)之间的任何时间。

URI是一种超阶级的URL和URN的的。 维基百科有关于他们的链接到一套正确的RFC的美好的文章。

网址

URL是URI的一个特例,它定义特定资源的网络位置。 不像URN,则URL定义了资源可以得到。 我们在形式使用的URL,每天http://example.com等。 但一个URL不必是HTTP URL,它可以是ftp://example.com等,太。

URI

一个URI按位置或名称,或两者标识资源无论是。 很多时候,我们大多数人使用URI定义一个位置的资源。 一个URI可以按名称和位置识别资源的事实已经导致大量的混乱在我看来。 一个URI有两个专业被称为URL和URN。

URL和URI的区别

URI是一个标识符对于某些资源,但一个URL给你以获得该资源的特定信息。 URI是一个URL,作为一个评论者所指出的,它现在被认为是不正确描述应用程序时使用的URL。 通常,如果URL描述的位置和一个资源的名称,使用的术语是URI。 因为这通常是我们大多数人每天都遇到的情况下,URI是正确的说法。

一个URI按位置或名称,或两者标识资源无论是。 很多时候,我们大多数人使用URI定义一个位置的资源。 一个URI可以按名称和位置识别资源的事实已经导致大量的混乱在我看来。 一个URI有两个专业被称为URL和URN。

URL是URI的一个特例,它定义特定资源的网络位置。 不像URN,则URL定义了资源可以得到。 我们在形式http://stackoverflow.com等使用的URL,每天但URLdoesn’吨已经是一个HTTP URL,也可以是ftp://example.com等。

尽管术语URI和URL严格定义的,许多用于比他们被定义用于其他事情的条款。

莱塔€™的取如Apache。 如果http://example.com/foo是从Apache服务器请求,有啊€™会具有以下环境变量设置:

  • REDIRECT_URL /foo
  • REQUEST_URI /foo

如果启用了mod_rewrite的,你也有这些变量:

  • REDIRECT_SCRIPT_URL /foo
  • REDIRECT_SCRIPT_URI http://example.com/foo
  • SCRIPT_URL /foo
  • SCRIPT_URI http://example.com/foo

这可能是一些混乱的原因。

看到这个文件。 特别,

的URL是一种类型的URI经由其主要访问机制的表示标识资源(如,它的网络“所在地”),而不是通过某些其他属性它可具有。

这不是一个非常明确的任期,真的。

他们是同样的事情。 URI是一个URL的推广。 最初,URI的原拟分为网址(地址)和垃圾桶(名称),但随后出现了一个URL和URI和HTTP的URI之间的差别不大被用作命名空间,即使他们实际上并没有找到任何资源。

维基百科会给所有你所需要的信息。 从http://en.wikipedia.org/wiki/URI报价:

URL是一个URI,除了查明资源,提供行动或获取资源的表示通过描述其主要访问机制或网络“位置”的手段。

通过帖子看完后,我发现一些非常相关的评论。 总之,URL和URI定义之间的混淆是部分基于其定义取决于这也是非正式的使用在软件开发这个词的URI。

根据定义URL是URI的[RFC2396]的子集。 URI包含URN和URL。 这两个URI和URL分别具有所赋予他们的是无论是URI或URL状态自己特定的语法。 URN是用于唯一地识别一个资源,而URL都用于定位资源。 需要注意的是一个资源可以有多个URL,但只有一个URN。[RFC2611]

作为Web开发人员和程序员,我们几乎总是关心的URL,因此URI。 现在,一个URL是专门定义为具有所有部件方案:方案描述的部分,例如像http://stackoverflow.com/questions。 这是一个URL,它也是一个URI。 现在考虑在页面中嵌入一个相对链接,如../index.html。 这已经不再是一个网址的定义。 它仍然是什么被称为一个“URI的参考”[RFC2396]。

我相信,当这个词URI被用来指相对路径,“URI引用”实际上是什么被想到的。 所以非正式地,软件系统使用的URI来指相对路径和URL的绝对地址。 所以在这个意义上说,相对路径不再是一个网址,但仍URI。

我想知道同样的事情,我发现这一点:http://docs.kohanaphp.com/helpers/url。

你可以看到用一个明显的例子url::current()方法。 如果你有这样的URL:http://localhost/kohana/index.php/welcome/home.html查询=字符串,然后使用url:current()赋予您的URI,根据文档,方法是: 欢迎/家庭

的URI是约从需要确定在网络上的资源, 以及其他网络资源 ,例如电子邮箱以均匀和一致的方式。 因此,我们可以引入一个新类型widget:URI标识插件资源或使用电话:URI来有网页链接会导致在被调用时进行电话呼叫。

一些URI提供信息来定位的资源(如一个DNS主机名和该机器上的通道),而一些被用作纯资源名称。 URL标识符是资源定位器 ,包括“HTTP”网址,如http://stackoverflow.com,标识网页的主机上的指定路径保留。 另一个例子是“邮寄地址”的网址,如邮寄地址:[email protected]其中确定在给定的地址的邮箱。

的URN是作为纯粹的资源名称 ,而不是定位器的URI。 例如,该URI:中等[email protected]是URN标识包含在其“邮件ID”字段的电子邮件。 的URI用来区分消息从任何其他电子邮件。 但它本身不提供邮件地址的任何商店。

这是我的简化:

URN:独特的资源名称,即“是什么”(如瓮:ISSN:1234-5678)。 这是为了唯一..如在没有两个不同的文档可以有相同的瓮。 像“的uuid”一位

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

网址:可以是URN或URL。 这个模糊的定义是由于​​RFC 3986由W3C和IETF生产。

URI的定义已经改变了多年来,所以它是有道理的,大多数人都混淆。 但是,你现在可以感到宽慰的是,你可以参考http://somesite.com/something作为URL或URI ......一个你会是正确的两种方式(至少FO​​T暂时反正.. 。)

我发现是:



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

按照RFC 3986,URI是由以下部分组成:

scheme://authority/path?query

该URI描述了一个服务器( 机构 )在访问资源( 路径)或应用程序( 查询)的协议。

URI和URL之间的区别


所有的URL是URI; 所有URN的是URI; 但URI所有的都没有网址

请参阅有关更多详细信息:

维基

URL - 统一资源定位器

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

  • http://example.com/mypage.html
  • ftp://example.com/download.zip
  • mailto:[email protected]
  • 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:isbn:0451450523由其ISBN号码,以确定一本书。
  • urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66一个全局唯一标识符
  • urn:publishing:book -标识文件作为类型的书的XML命名空间。

URN的可以识别的思想和理念。 它们不局限于身份证明文件。 当一个URN确实代表一个文件,它可以由一个“分解”被翻译成一个URL。 文档然后可以从该URL下载的。

URI - 统一资源标识符

的URI包含网址,骨灰盒等方式来识别资源。

的URI的既不是网址或URN一个例子是一个数据的URI,如data:,Hello%20World 它不是一个网址或URN因为URI包含的数据。 它没有名字了,也不告诉你如何找到它在网络上。

也有统一资源引用(URC可以),该指向元数据有关文档而不是该文档本身。 一个URC的一个例子是一个标识符查看网页的源代码: view-source:http://example.com/ 一个URC是另一种类型的URI的既不是URL,也不URN。

经常问的问题

我听说,我不应该说的网址了,为什么呢?

在W3规范的HTML表示href锚标记可以包含一个URI,而不仅仅是一个网址。 你应该能够在一个URN把诸如<a href="urn:isbn:0451450523"> 您的浏览器会再解决URN到一个URL并下载你的书。

做任何浏览器根本不知道如何通过URN获取的文件?

不,我知道的,但现代的Web浏览器都实现了数据的URI方案。

难道URL和URI的区别有什么关系无论是相对还是绝对?

号相对和绝对网址是网址(和URI)。

难道URL和URI的区别有什么关系是否有查询参数?

号带和不带查询参数的两个网址的网址(和URI)。

难道URL和URI的区别有什么与它是否有一个片段标识符?

号带和不带片段标识符这两个网址的网址(和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 这个URI将继续来命名,即使在w3.org网站上的网页被删除了HTML4过渡的doctype。

很容易解释:

让我们假设以下

URI是你的名字

网址是按顺序与您沟通你的名字您的地址。

  • 我的名字是罗耀拉

    洛约拉是URI
  • 我的地址是TN,钦奈600001。

TN,钦奈600 001,洛约拉是网址

希望你能理解,

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

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

在上面,你可以使用一个网页叫做firstpage.html(URI)以下http://www.google.com/fistpage.html(URL)进行通信。

因此,URI是URL的子集,而不是相反。

答案是不明确的。 在Java它经常以这种方式使用:

一个统一资源定位符(URL)是用于识别一个互联网资源包括方案(HTTP,HTTPS,FTP,新闻等)的术语。 比如什么是URI和URL之间的区别是什么?

一个统一资源标识符(URI)用于标识Web服务器在一个单一的文件:比如/问题/ 176264 /最新最差之间-A-URI - 和 - 网址

在Java中的servlet中,URI经常指的是文档,而不Web应用程序上下文。

这两个URL和URI都是一样的。 通过w3.org http://www.w3.org/Addressing/#background CHCK下面的链接

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

最常见的URI是统一资源定位器(URL)识别的因特网域名地址。 URI的另一个,不那么常见的类型是统一资源名称(URN)。

为了回答这个问题,我会依靠一个答案我修改了另一个问题。 一个URI的一个很好的例子是如何确定一个Amazon S3资源。 让我们来:

s3://www-example-com/index.html [图。 1]

我创建为的缓存副本

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

AmazonS3-US-西-2数据中心。

即使计算器可以让我超链接到s3://协议方案,它不会对你有任何好它定位资源。 因为它确定一个资源无花果。 图1是一个有效的URI。 这也是一个有效的骨灰盒,因为亚马逊需要桶(其任期的authority URI的部分)是跨数据中心是唯一的。 它是在定位它有帮助的,但它并不表示的数据中心。 因此它不作为一个URL工作。

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

  • 图。 图1是一个URI
  • 图。 图1是 URN
  • 图。 图2是一个URI
  • 图。 图2是一个URL
  • 该网址图。 1 http://www-example-com.s3-website-us-west-2.amazonaws.com/
    • 也http://www-example-com.s3.amazonaws.com/index.html
    • 但不http://www-example-com.s3.amazonaws.com/(没有数据中心,并没有文件名是太普通了亚马逊的S3)

注:RFC 3986定义的URI的scheme://authority/path?query#fragment

分类:HTTP 时间:2012-05-07 人气:0
本文关键词: HTTP,URL,URI,瓮
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.303 (s). 9 q(s)