URI,URL和URN有什么区别?
人们谈论URL , URI和URN就好像它们是不同的东西,但它们肉眼看起来是一样的。
它们之间有什么明显的区别?
从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个其他人。
这是一个定位器,它是该物理位置的标识符。 它就像一个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过渡文档类型。
链接地址: http://www.djcxy.com/p/191.html