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

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

Примечание. Текущий стандарт URL по адресу https://url.spec.whatwg.org/#url-representation заменяет RFC 3986 и обходится без использования термина URI, как описано в разделе "Цели":

Стандартизировать термин URL. URI и IRI просто сбивают с толку. На практике один и тот же алгоритм используется для обоих, поэтому их различие не помогает никому. URL также легко побеждает в конкурсе популярности результатов поиска.

Но приведенная ниже информация описывает URI с точки зрения устаревшей спецификации RFC 3986.


Состав

URI может быть унифицированным указателем ресурса , унифицированным именем ресурса или и тем, и другим.

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

    foo://example.com:8042/over/there?name=ferret#nose
    \_/   \______________/\_________/ \_________/ \__/
     |           |            |            |        |
  scheme     authority       path        query   fragment

Затем, определяя относительные URI (раздел 5.2), вы можете опустить любой из этих разделов, всегда начиная слева. В псевдокоде это выглядит так:

 result = ""

  if defined(scheme) then
     append scheme to result;
     append ":" to result;
  endif;

  if defined(authority) then
     append "//" to result;
     append authority to result;
  endif;

  append path to result;

  if defined(query) then
     append "?" to result;
     append query to result;
  endif;

  if defined(fragment) then
     append "#" to result;
     append fragment to result;
  endif;

  return result;

URI, который вы описываете, является относительным URI без схемы.

Примеры

Например, в следующем URI:

https://stackoverflow.com/questions/tagged/uri?sort=newest&pagesize=50#questions

... компоненты:

  • схема: https

  • иерархическая часть: //stackoverflow.com/questions/tagged/uri

  • query: sort=newest&pagesize=50

  • фрагмент: questions

Точный синтаксис отдельных компонентов варьируется в зависимости от схемы. Вот некоторые примеры:

  • mailto:[email protected]?subject=Hello&body=Is%20anybody%20home%3F

  • data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=

  • urn:ietf:rfc:3986

URL

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

Например, URL-адрес http://example.org/wiki/Main_Page относится к ресурсу, идентифицированному как /wiki/Main_Page, представление которого в виде HTML и связанного кода можно получить по протоколу передачи гипертекста (http) с сетевого узла чье доменное имя - example.org.

Ссылка на URI

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

Чтобы извлечь URI из ссылки на URI, программное обеспечение преобразует ссылку на URI в "абсолютную" форму, объединяя ее с абсолютным "базовым" URI в соответствии с фиксированным алгоритмом. Система обрабатывает ссылку на URI относительно базового URI, хотя в случае абсолютной ссылки база не имеет значения. Базовый URI обычно идентифицирует документ, содержащий ссылку на URI, хотя это может быть переопределено декларациями, сделанными в документе или как часть протокола внешней передачи данных. Если базовый URI содержит идентификатор фрагмента, он игнорируется в процессе объединения. Если идентификатор фрагмента присутствует в ссылке URI, он сохраняется во время процесса объединения.

Языки разметки веб-документов часто используют ссылки URI для указания на другие ресурсы, такие как внешние документы или определенные части того же логического документа.

Использование ссылок URI на языках разметки

  • В HTML значение атрибута src элемента img предоставляет ссылку на URI, как и значение атрибута href элемента a или link.
  • В XML системный идентификатор, появляющийся после ключевого слова SYSTEM в DTD, является ссылкой на фрагмент URI.
  • В XSLT значение атрибута href элемента/инструкции xsl: import является ссылкой на URI; аналогично первый аргумент функции document().

Примеры абсолютных URI

Примеры ссылок на URI

  • https://en.wikipedia.org/wiki/URI#Examples_of_URI_references ("https" задает имя "схемы", "en.wikipedia.org" - "авторитет", "/wiki/URI" - указатель "путь") на эту статью, и "#Examples_of_URI_references" является "фрагментом", указывающим на этот раздел.)
  • http://example.org/absolute/URI/with/absolute/path/to/resource.txt
  • //example.org/scheme-relative/URI/with/absolute/path/to/resource.txt
  • /relative/URI/with/absolute/path/to/resource.txt
  • относительная/путь/к /resource.txt
  • .. /../../resource.txt
  • . /resource.txt#frag01
  • resource.txt
  • # frag01
  • (пустой строки)