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

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

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

Ответы [ 31 ]

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

Другой пример, который мне нравится использовать, когда я думаю о URI, - это атрибут xmlns документа XML:

<rootElement xmlns:myPrefix="com.mycompany.mynode">
    <myPrefix:aNode>some text</myPrefix:aNode>
</rootElement>

В этом случае com.mycompany.mynode будет URI, который уникально идентифицирует пространство имен «myPrefix» для всех элементов, которые используют его в моем XML-документе. Это НЕ URL, потому что он используется только для идентификации, а не для поиска чего-либо как такового.

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

Из-за трудностей четкого различия между URI и URL, насколько я помню, W3C больше не делает различий между URI и URL (http://www.w3.org/Addressing/).

26 голосов
/ 07 октября 2008

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

23 голосов
/ 02 июня 2016

URI and URL

URI, URL, URN

Как показано на рисунке выше, здесь есть три отдельных компонента. Обычно лучше всего обратиться к источнику при обсуждении подобных вопросов, так что вот выдержка из Тим Бернерс-Ли и др. и др. в RFC 3986: унифицированный идентификатор ресурса (URI): общий синтаксис:

Унифицированный идентификатор ресурса (URI) представляет собой компактную последовательность символы, обозначающие абстрактный или физический ресурс.

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

20 голосов
/ 07 октября 2008

URI - это своего рода суперкласс URL и URN. В Википедии есть прекрасная статья о них со ссылками на правильный набор RFC.

16 голосов
/ 08 сентября 2012

URL

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 является правильным термином.

16 голосов
/ 07 октября 2008

Википедия предоставит всю необходимую вам информацию здесь. Цитата из http://en.wikipedia.org/wiki/URI:

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

15 голосов
/ 28 августа 2014

Согласно RFC 3986 , URI состоят из следующих частей:

scheme://authority/path?query

URI описывает протокол для доступа к ресурсу ( путь ) или приложению ( запрос ) на сервере ( полномочия ).

Enter image description here

Все URL-адреса являются URI, а все URN являются URI, но все URI не являются URL-адресами.

Пожалуйста, обратитесь за более подробной информацией:

Wikipedia

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

URI идентифицирует ресурс либо по местоположению, либо по имени, либо по обоим. Чаще всего большинство из нас использует URI, которые определяют местоположение ресурса. На мой взгляд, тот факт, что URI может идентифицировать ресурсы как по имени, так и по местоположению, привел к большой путанице. URI имеет две специализации, известные как URL и URN.

URL-адрес - это специализация URI, которая определяет сетевое местоположение определенного ресурса. В отличие от URN, URL определяет способ получения ресурса. Мы используем URL-адреса каждый день в форме http://stackoverflow.com, и т. Д. Но URL-адрес не обязательно должен быть HTTP-URL, это может быть ftp://example.com и т. Д.

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

Хотя термины URI и URL строго определены, многие используют термины для других вещей, для которых они не определены.

Давайте возьмем Apache, например. Если с сервера Apache запрашивается http://example.com/foo, у вас будут установлены следующие переменные среды:

  • REDIRECT_URL: /foo
  • REQUEST_URI: /foo

При включенном mod_rewrite у вас также будут следующие переменные:

Это может быть причиной некоторой путаницы.

...