В чем разница между URI, URL и URN? - PullRequest
4098 голосов
/ 07 октября 2008

Люди говорят о URL s, URI s и URN s, как будто это разные вещи, но они выглядят одинаково невооруженным глазом.

В чем разница между ними?

Ответы [ 31 ]

10 голосов
/ 07 октября 2012

После прочтения постов, я нахожу некоторые очень важные комментарии. Короче говоря, путаница между определениями URL и URI частично основана на том, какое определение зависит от какого, а также неформального использования слова URI в разработке программного обеспечения.

По определению, URL является подмножеством URI [RFC2396]. URI содержат URN и URL. И URI, и URL имеют собственный синтаксис, который присваивает им статус URI или URL. URN предназначены для уникальной идентификации ресурса, а URL - для поиска ресурса. Обратите внимание, что ресурс может иметь более одного URL, но только один URN. [RFC2611]

Как веб-разработчики и программисты, мы почти всегда будем иметь дело с URL и, следовательно, с URI. Теперь URL-адрес специально определен, чтобы иметь всю схему частей: схема-специфическая часть, как, например, https://stackoverflow.com/questions. Это URL-адрес, а также URI. Теперь рассмотрим относительную ссылку, встроенную в страницу, например ../index.html. Это больше не URL по определению. Это все еще то, что называется «URI-ссылкой» [RFC2396].

Я считаю, что когда слово URI используется для обозначения относительных путей, «URI-ссылка» на самом деле является тем, о чем идет речь. Так, неофициально, программные системы используют URI для ссылки на относительный путь и URL для абсолютного адреса. Таким образом, в этом смысле относительный путь больше не является URL-адресом, а все же URI.

10 голосов
/ 31 декабря 2009

См. этот документ . В частности,

URL - это тип URI, который идентифицирует ресурс через представление его основного механизма доступа (например, его «местоположение» в сети), а не по некоторым другим атрибутам, которые он может иметь.

Это не очень понятный термин, на самом деле.

9 голосов
/ 15 мая 2010

Меня интересовало то же самое, и я нашел это: 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

9 голосов
/ 29 августа 2012

Вот мое упрощение:

URN: уникальное имя ресурса, то есть «что» (например, urn: issn: 1234-5678). Это должно быть уникальным ... так как ни в одном из двух разных документов не может быть одинаковой урны. Немного похоже на "uuid"

URL: «где» найти его (например, https://google.com/pub?issnid=1234-5678 .. или ftp: //somesite.com/doc8.pdf)

URI: может быть URN или URL. Это нечеткое определение благодаря RFC 3986, выпущенному W3C и IETF.

Определение URI менялось с годами, поэтому имеет смысл путать большинство людей. Тем не менее, теперь вы можете утешиться тем фактом, что вы можете ссылаться на http://somesite.com/something как на URL, так и на URI ... и вы будете правы в любом случае (по крайней мере, пока что в любом случае ...)

7 голосов
/ 10 марта 2012

URI возникли из-за необходимости идентифицировать ресурсы в сети, и другие интернет-ресурсы , такие как электронные почтовые ящики, единообразным и согласованным образом. Таким образом, можно ввести новый тип виджетов: URI для идентификации виджетов ресурсов или использовать tel: URI, чтобы иметь веб-ссылки, которые заставляют делать телефонные звонки, когда вызывается.

Некоторые URI предоставляют информацию для определения местоположения ресурса (например, имя хоста DNS и путь на этом компьютере), а некоторые используются как чистые имена ресурсов. URL зарезервирован для идентификаторов, которые являются локаторами ресурсов , включая URL-адреса 'http', такие как http://stackoverflow.com,, который идентифицирует веб-страницу по указанному пути на хосте. Другим примером являются URL-адреса «mailto», например mailto: fred@mail.org, который идентифицирует почтовый ящик по указанному адресу.

URN - это URI, которые используются как чистые имена ресурсов , а не как локаторы. Например, URI: mid: 0E4FC272-5C02-11D9-B115-000A95B55BC8@stackoverflow.com - это URN, который идентифицирует сообщение электронной почты, содержащее его, в своем поле «Message-Id». URI служит для того, чтобы отличить это сообщение от любого другого сообщения электронной почты. Но он не предоставляет адрес сообщения в любом магазине.

6 голосов
/ 10 марта 2015

Чтобы ответить на этот вопрос, я опираюсь на ответ, который я изменил на другой вопрос . Хороший пример URI - это способ определения ресурса Amazon S3. Давайте возьмем:

s3://www-example-com/index.html [рис. 1]

, который я создал как кэшированную копию

http://www.example.com/index.html [рис. 2]

в центре обработки данных Amazon S3-US-West-2 .

Даже если StackOverflow позволит мне сделать гиперссылку на схему протокола s3:// , это не поможет вам в поиске ресурса. Потому что это Идентифицирует a Ресурс , рис. 1 является действительным URI. Это также действительный URN, поскольку Amazon требует, чтобы сегмент (их термин для части authority URI) был уникальным для центров обработки данных. полезно в его поиске, но это не указывает на центр обработки данных. Поэтому он не работает как URL.

Итак, чем отличаются URI, URL и URN в этом случае?

ПРИМЕЧАНИЕ: RFC 3986 определяет URI как scheme://authority/path?query#fragment

6 голосов
/ 10 февраля 2015

Легко объяснить:

Предположим, что следующее

URI - ваше имя

URL - это ваш адрес с вашим именем для связи с вами.

  • меня зовут Лойола

    Лойола URI

  • мой адрес TN, Ченнаи 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, но не наоборот.

4 голосов
/ 03 декабря 2014

Унифицированный идентификатор ресурса (URI) - это строка символов, которая идентифицирует интернет-ресурс.

Наиболее распространенный URI - это унифицированный указатель ресурса (URL), который идентифицирует адрес домена в Интернете. Другой, не очень распространенный тип URI - универсальное имя ресурса (URN).

4 голосов
/ 11 августа 2013

Я нашел:


Унифицированный идентификатор ресурса (URI) представляет собой нечто общее. Вы можете разделить URI / URI можно классифицировать как локаторы (унифицированные указатели ресурса-URL), или как имена (унифицированное имя-ресурса URN), или оба. Таким образом, в основном URN функционирует как имя человека, а URL-адрес отображает адрес этого человека. Короче говоря, URN определяет идентификатор элемента, в то время как URL-адрес определяет метод его поиска, и, наконец, инкапсулирует эти два понятия URI

0 голосов
/ 07 марта 2016

Не забывайте URNs. URI и URL являются URN. URL имеют местоположение:

URI: foo
URL: http://some.domain.com/foo
URL: http://some.domain.com:8080/foo
URL: ftp://some.domain.com/foo

Они все URN.

...