一个 URL、一个 URI 和一个 URN 的区别是什么?


当前回答

這些是幾個非常好寫的,但很長的答案. 以下是 CodeIgniter 所涉及的差異:

地址: http://example.com/some/page.html

URI - /some/page.html

简单地说,URL是识别任何资源的完整方式,并且可以有不同的协议,如FTP、HTTP、SCP等。

URI 是当前域的资源,因此需要找到更少的信息。

在每个例子中,CodeIgniter使用这个词URL或URI,这是他们正在谈论的差异,尽管在网格的格式中,它不是100%正确的。

其他回答

URI => http://en.wikipedia.org/wiki/Uniform_Resource_Identifier

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

基本上,一个 URI 是一个通用识别器,在那里一个 URL 指定一个位置,而一个 URN 指定一个名字。

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

scheme://authority/path?query

URI 描述了在服务器(权威)上访问资源(路径)或应用程序(请求)的协议。

此分類上一篇

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

请参见更多详细信息:

维基百科

此分類上一篇

URI、URL、URN

如上图所示,这里有三个不同的组成部分,通常最好在讨论这些问题时去源头,所以这里是由Tim Berners-Lee, et. al.在RFC 3986: Uniform Resource Identifier(URI): Generic Syntax:

统一资源识别器(URI)是识别一个抽象或物理资源的字符的微型序列,URI可以进一步分类为一个位置,一个名称,或两者。

下面是我的简化:

URN:独一无二的资源名称,即“什么”(例如 urn:issn:1234-5678 ) 这个意思是独一无二的.. 因为在没有两个不同的文件可以有相同的 urn。

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

URI:可以是URN或URL,这种混乱的定义是由于W3C和IETF生产的RFC 3986。

URI的定义在过去的几年里改变了,所以对于大多数人来说是有意义的混淆。 但是,你现在可以放松的是,你可以提到 http://somesite.com/某些东西,无论是URL还是URI......你都会是正确的,无论如何(至少是时光,无论如何...)

首先,把你的头脑脱离混乱,把它简单,你会明白。

URI => 统一资源识别器 识别一个完整的资源地址 i-e 位置,名称或两者。

URL => Uniform Resource Locator 指定资源的位置。

URN => 统一资源名称 识别资源名称

例子

我们有一个地址 https://www.google.com/folder/page.html 在哪里,

URI(统一资源识别器) => https://www.google.com/folder/page.html

URL(Uniform Resource Locator) => https://www.google.com/

URN(统一资源名称) => /folder/page.html

URI => (URL + URN) 或 URL 仅或 URN 仅