小智 3779
URI的标识和 URL的定位 ; 但是,定位器也是标识符,因此每个URL也是一个URI,但是有些URI不是URL.
这是我的名字,这是一个标识符.它就像一个URI,但不能是一个URL,因为它不会告诉你我的位置或如何联系我.在这种情况下,它也恰好在美国仅识别至少5个其他人.
这是一个定位器,它是该物理位置的标识符.它就像一个URL和URI(因为所有的URL都是URI),并且间接地将我识别为"驻留...".在这种情况下,它唯一地识别我,但如果我得到一个室友,那将会改变.
我说"喜欢",因为这些示例不遵循所需的语法.
来自维基百科:
在计算中,统一资源定位符(URL)是统一资源标识符(URI)的子集,其指定所识别资源可用的位置以及用于检索它的机制.在流行的用法和许多技术文档和口头讨论中,它经常被错误地用作URI的同义词,... [强调我的]
由于这种常见的混淆,许多产品和文档错误地使用一个术语而不是另一个术语,分配它们自己的区别,或者同义地使用它们.
我的名字Roger Pate可能就像一个URN(统一资源名称),除了那些受到更多监管并且意图在空间和时间上都是独一无二的.
因为我目前与其他人分享这个名字,所以它不是全球唯一的,不适合作为URN.然而,即使没有其他家庭使用这个名字,我也是以我的祖父的名字命名的,所以它在一段时间内仍然不会是唯一的.即使这是不是这样,我以后命名我的后代的可能性,使这个不适合作为URN.
URN与此严格唯一性约束中的URL不同,即使它们都共享URI的语法.
Jon*_*eet 1696
来自RFC 3986:
URI可以进一步分类为定位符,名称或两者.术语"统一资源定位符"(URL)指的是URI的子集,其除了标识资源之外,还通过描述其主要访问机制(例如,其网络"位置")来提供定位资源的手段.历史上使用术语"统一资源名称"(URN)来指代"urn"方案[RFC2141]下的两个URI ,即使资源不再存在或变得不可用,它们仍然是全局唯一且持久的,并且到具有名称属性的任何其他URI.
因此,所有URL都是URI(实际上并不完全 - 见下文),并且所有URN都是URI - 但URN和URL是不同的,因此您不能说所有URI都是URL.
编辑:我以前认为所有的URL都是有效的URI,但根据评论:
不是 "所有网址都是URI".这取决于RFC的解释.例如在Java中,URI解析器不喜欢
[或]那是因为规范说"不应该"而不是"不应该".
不幸的是,这使得水更加混乱.
如果您还没有阅读过Roger Pate的答案,我也建议您这样做.
Ste*_*ler 623
URI是使用短数字,字母和符号标识文档的标准.它们由RFC 3986定义- 统一资源标识符(URI):通用语法.URL,URN和URC都是URI的类型.
包含有关如何从其位置获取资源的信息.例如:
http://example.com/mypage.htmlftp://example.com/download.zipmailto:user@example.comfile:///home/user/file.txttel:1-888-555-5555http://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过渡文档类型.

Gre*_*reg 250
总结:URI标识,URL标识和定位.
考虑莎士比亚戏剧" 罗密欧与朱丽叶"的特定版本,您可以在家庭网络上获得数字拷贝.
您可以将文本标识为urn:isbn:0-486-27557-4.
这将是一个URI,但更具体地说是一个URN*,因为它命名文本.
您还可以将文本标识为file://hostname/sharename/RomeoAndJuliet.pdf.
这也是一个URI,但更具体地说是一个URL,因为它定位了文本.
*统一资源名称
(注意我的例子改编自维基百科)
Phi*_*eon 138
这些是一些写得很好但很冗长的答案.就CodeIgniter而言,这是不同之处:
网址 - http://example.com/some/page.html
URI - /some/page.html
简而言之,URL是在任何地方识别任何资源的完整方式,并且可以具有不同的协议,如FTP,HTTP,SCP等.
URI是当前域上的资源,因此需要较少的信息.
在CodeIgniter使用单词URL或URI的每个实例中,这是他们所讨论的差异,尽管在Web的宏观方案中,它并非100%正确.
小智 84
首先让你的思绪摆脱困惑,并把它简单化,你会理解.
URI =>统一资源标识符 标识资源的完整地址,即位置,名称或两者.
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
小智 53
这是我作为网络专业人士遇到的最令人困惑且可能无关的话题之一.
据我了解,URI是一种事物的描述,遵循可接受的格式,可以定义某事物的唯一名称(标识)或其位置.
有两个基本子集 - URL,用于定义位置(尤其是用于查找网页的浏览器)和URN,用于定义某些内容的唯一名称.
我倾向于认为URN与GUID类似.它们只是一种标准化的方法,可以为事物提供唯一的名称.就像在使用公司名称的名称空间声明中一样 - 它不像是某个资源位于服务器某处以对应于该行文本 - 它只是唯一地标识某些内容.
我也倾向于完全避免使用术语URI并仅在URL或URN方面讨论事情,因为它会引起很多混乱.我们应该真正尝试为人们回答的问题不是语义,而是在遇到这些术语时如何确定是否存在任何实际差异会改变编程情况的方法.例如,如果有人在谈话中纠正我,并且说:"哦,这不是一个URL它是一个URI"我知道他们已经充满了它.如果有人说"我们正在使用URN来定义资源",我更有可能理解我们只是将它命名为唯一的,而不是将其定位在服务器上.
如果我离开基地 - 请告诉我!
Pre*_*raj 48
标识符=名称+位置
从抽象的角度讲,每个URL(U niform R esource L ocator)都是一个URI(U niform R esource I dentifier ),但每个URI都不是URL.URI的另一个子类别是URN(U niform R esource N ame),它是一个命名资源,但没有指定如何定位它们,如mailto,news,ISBN是URI. 资源
瓮:
urn:[namespace identifier]:[namespace specific string] arn:partition:service:region:account-id:resource网址:
[scheme]://[Domain][Port]/[path]?[queryString]#[fragmentId] 类比:联系
到某人:驾驶(协议其他短信,电子邮件,电话),地址(主机名,其他电话号码,电子邮件)和人名(具有相对路径的对象名称).
Cra*_*son 42
URI => http://en.wikipedia.org/wiki/Uniform_Resource_Identifier
URL是URI的子集(也包含URN).
基本上,URI是一般标识符,其中URL指定位置,URN指定名称.
D.C*_*.C. 35
我在考虑URI时喜欢使用的另一个例子是XML文档的xmlns属性:
<rootElement xmlns:myPrefix="com.mycompany.mynode">
<myPrefix:aNode>some text</myPrefix:aNode>
</rootElement>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,com.mycompany.mynode将是一个URI,它唯一地标识在我的XML文档中使用它的所有元素的"myPrefix"命名空间.这不是URL,因为它仅用于识别,而不是用于定位本身.
Adi*_*iii 24
URI,URL,URN
如上图所示,这里有三个不同的组件.在讨论这些问题时,通常最好去消息来源,所以这里是Tim Berners-Lee等人的一个例子.人.在 RFC 3986中:统一资源标识符(URI):通用语法:
统一资源标识符(URI)是一种紧凑的字符序列,用于标识抽象或物理资源.
URI可以进一步分类为定位符,名称或两者.术语"统一资源定位符"(URL)指的是URI的子集,其除了标识资源之外,还通过描述其主要访问机制(例如,其网络"位置")来提供定位资源的手段.
Pet*_*ton 16
维基百科将在此提供您需要的所有信息.引自http://en.wikipedia.org/wiki/URI:
URL是一种URI,除了识别资源之外,还提供了通过描述其主要访问机制或网络"位置"来对资源进行操作或获得资源表示的手段.
Suj*_*jit 16
网址
URL是URI的特化,用于定义特定资源的网络位置.与URN不同,URL定义了如何获取资源.我们每天都以http://example.com等形式使用URL .但是URL不必是HTTP URL,也可以是ftp://example.com等等.
URI
URI按位置或名称或两者标识资源.通常,我们大多数人使用URI来定义资源的位置.URI可以通过名称和位置来识别资源这一事实在我看来引起了很多混乱.URI有两个称为URL和URN的特化.
URL和URI之间的区别
URI是某些资源的标识符,但URL为您提供了获取该资源的具体信息.URI是一个URL,正如一位评论者所指出的,现在认为在描述应用程序时使用URL是不正确的.通常,如果URL描述资源的位置和名称,则使用的术语是URI.由于这通常是我们大多数人每天都遇到的情况,因此URI是正确的术语.
Pra*_*ams 15
根据RFC 3986,URI由以下部分组成:
scheme://authority/path?query
Run Code Online (Sandbox Code Playgroud)
URI描述用于访问服务器(授权)上的资源(路径)或应用程序(查询)的协议.

所有URL都是URI,所有URN都是URI,但所有URI都不是URL.
请参阅更多详情:
小智 13
URI按位置或名称或两者标识资源.通常,我们大多数人使用URI来定义资源的位置.URI可以通过名称和位置来识别资源这一事实在我看来引起了很多混乱.URI有两个称为URL和URN的特化.
URL是URI的特化,用于定义特定资源的网络位置.与URN不同,URL定义了如何获取资源.我们每天都以http://stackoverflow.com等形式使用网址.但网址不一定是HTTP网址,也可以是网址ftp://example.com等.
Gum*_*mbo 11
虽然术语URI和URL是严格定义的,但许多术语将这些术语用于除定义之外的其他内容.
我们以Apache为例.如果从Apache服务器请求http://example.com/foo,您将设置以下环境变量:
REDIRECT_URL: /fooREQUEST_URI: /foo启用mod_rewrite后,您还将拥有以下变量:
REDIRECT_SCRIPT_URL: /fooREDIRECT_SCRIPT_URI: http://example.com/fooSCRIPT_URL: /fooSCRIPT_URI: http://example.com/foo这可能是一些混乱的原因.
小智 10
阅读完帖子后,我发现了一些非常相关的评论.简而言之,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.
我想知道同样的事情,我发现了这个:http://docs.kohanaphp.com/helpers/url.
您可以使用该url::current()方法查看明确的示例.如果你有这个URL:http://example.com/kohana/index.php/welcome/home.html?query=string那么使用url:current()给你的URI,根据文档,它是:welcome/home
这是我的简化:
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 ...无论如何,您将是正确的(至少暂时无论如何...... .)
URI来自于需要以统一和连贯的方式识别Web上的资源以及其他Internet资源(如电子邮箱).因此,可以引入一种新类型的小部件:用于标识小部件资源的URI 或使用tel: URI来使Web链接在调用时进行电话呼叫.
某些URI提供了查找资源的信息(例如DNS主机名和该机器上的路径),而某些URI则用作纯资源名称.该URL被保留用于标识的资源定位器,包括"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用于区分该消息与任何其他电子邮件消息.但它本身并不在任何商店提供消息的地址.
最好的(技术)总结imo是这个
IRI、URI、URL、URN 以及它们与Jan Martin Keil的区别:
每个处理语义 Web 的人都会反复遇到术语IRI、URI、URL和URN。尽管如此,我经常观察到人们对它们的确切含义存在一些混淆。当然,其他人也注意到了这一点(参见例如 RFC3305 或在 Google 上搜索)。老实说,我一开始也很困惑。但实际上问题并没有那么复杂。让我们来看看上述术语的定义,看看有什么区别:
甲统一资源标识符是一个字符的紧凑序列识别摘要或物理资源。字符集仅限于 US-ASCII,不包括某些保留字符。允许字符集之外的字符可以使用百分比编码来表示。URI 可用作定位器、名称或两者。如果 URI 是定位器,则它描述资源的主要访问机制。如果一个 URI 是一个名称,它通过给它一个唯一的名称来标识一个资源。URI 的语法和语义的确切规范取决于使用的由第一个冒号之前的字符定义的 Scheme。[RFC3986]
甲统一资源名称是一个URI方案中的瓮旨在作为持久的,独立于位置的,资源标识符。从历史上看,该术语也指任何 URI。[RFC3986] URN 由命名空间标识符 (NID) 和命名空间特定字符串 (NSS) 组成: urn:: NSS 的语法和语义是特定于每个 NID 的。除了已注册的 NID,还有几个 NID 没有经过正式注册程序。[RFC2141]
甲统一资源定位符是一个URI的是,除了标识一个资源,提供了一种定位通过描述其主要访问机制[RFC3986]的资源的一种手段。由于没有通过一组 Schemes 来准确定义 URL,“URL 是一个有用但非正式的概念”,通常指的是不包含 URN [RFC3305] 的 URI 子集。
一个国际化资源标识符被类似地定义为URI,但该字符集扩展到通用字符集。因此,它可以包含除保留字符之外的任何拉丁字符和非拉丁字符。引入术语 IRI 代替扩展 URI 的定义,以便明确区分并避免不兼容。IRI 旨在在支持通用编码字符集的情况下替换 URI 来识别资源。根据定义,每个 URI 都是一个 IRI。此外,有定义的 IRI 到 URI 的满射映射:每个 IRI 可以映射到一个 URI,但不同的 IRI 可能映射到同一个 URI。因此,从 URI 转换回 IRI 可能不会产生原始 IRI。[RFC3987]
IRI is a superset of URI (IRI ? URI)
URI is a superset of URL (URI ? URL)
URI is a superset of URN (URI ? URN)
URL and URN are disjoint (URL ? URN = ?)
Run Code Online (Sandbox Code Playgroud)
RDF 明确允许使用 IRI 来命名实体 [RFC3987]。这意味着我们几乎可以使用实体名称中的每个字符。另一方面,我们经常不得不处理早期状态的软件。因此,使用非 ASCII 字符不太可能遇到问题。因此,我建议避免实体的非 URI 名称,并建议使用 http URI [LINKED-DATA]。简而言之:仅使用 URL 来命名您的实体。当然,我们可以引用由 URN 命名的现有实体。但是,我们应该避免新创建这种标识符。
易于解释:
让我们假设如下
URI是你的名字
URL是您的姓名地址,以便与您沟通.
我的名字是洛约拉
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(URL).
因此URI是URL的子集,但反之亦然.
为了回答这个问题,我将依赖于我修改为另一个问题的答案.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要求数据包(它们authority的URI部分的术语)在数据中心之间是唯一的.它有助于查找它,但它不表示数据中心.因此它不能用作URL.
那么,在这种情况下,URI,URL和URN有何不同?
注意: RFC 3986将URI定义为scheme://authority/path?query#fragment
| 归档时间: |
|
| 查看次数: |
1107890 次 |
| 最近记录: |