URI
URI (Uniform Resource Identifier, унифицированный идентификатор ресурса) — это компактная строка символов, однозначно идентифицирующая абстрактный или физический ресурс в сети. URI служит основой для адресации в интернете и веб-технологиях, обеспечивая единообразный способ ссылки на документы, изображения, сервисы, части данных и другие объекты. В отличие от URL (Uniform Resource Locator), URI может не указывать на способ доступа к ресурсу, а только на его имя (URN). Стандарт URI определён в документах RFC 3986 и RFC 2396 (устаревший).
История и развитие
Концепция URI была разработана в начале 1990-х годов как часть архитектуры Всемирной паутины. Первоначально Тим Бернерс-Ли и его коллеги из CERN (Европейская организация по ядерным исследованиям) предложили универсальную схему адресации для гипертекстовых документов. В 1994 году был опубликован RFC 1630, который ввёл термин «Universal Resource Identifier» (универсальный идентификатор ресурса). Позднее, в 1998 году, в RFC 2396 термин был переименован в «Uniform Resource Identifier» (унифицированный идентификатор ресурса), чтобы подчеркнуть его единообразие, а не всеобщность. В 2005 году вышла текущая версия спецификации — RFC 3986, которая уточнила синтаксис и семантику URI.
Структура URI
URI состоит из нескольких обязательных и необязательных компонентов, разделённых определёнными символами. Общая схема выглядит следующим образом:
`` схема:[//[логин:пароль@]хост[:порт]][/путь][?запрос][#фрагмент] ``
- Схема — обязательный компонент, определяющий протокол или способ интерпретации URI. Примеры:
http,https,ftp,mailto,urn. Схема отделяется от остальной части двоеточием. - Авторитетная часть (authority) — необязательный компонент, начинающийся с двойного слеша (
//). Включает: - Хост — доменное имя или IP-адрес сервера (например,
example.comили192.0.2.1). - Порт — номер порта на сервере (например,
:80или:443). Если порт не указан, используется порт по умолчанию для данной схемы. - Логин и пароль — редко используемая часть для аутентификации (например,
user:password@host). - Путь — последовательность сегментов, идентифицирующая конкретный ресурс на сервере (например,
/images/photo.jpg). Путь может быть иерархическим или плоским. - Запрос (query) — необязательная часть, начинающаяся с вопросительного знака (
?). Содержит параметры в виде пар «ключ=значение», разделённых амперсандом (&). Используется для передачи данных, не являющихся частью пути (например,?page=2&sort=asc). - Фрагмент (fragment) — необязательная часть, начинающаяся с символа решётки (
#). Указывает на часть ресурса (например, раздел документа или точку в видео). Фрагмент обрабатывается на стороне клиента и не передаётся серверу.
Пример полного URI: `` pass@example.com:8080/path/to/resource?key=value&lang=ru#section2" target="_blank" rel="nofollow noopener">https://user:pass@example.com:8080/path/to/resource?key=value&lang=ru#section2 ``
Классификация URI
URL (Uniform Resource Locator)
URL — это подмножество URI, которое не только идентифицирует ресурс, но и указывает на способ его получения (локацию). Большинство URI, используемых в вебе, являются URL. Например, https://ru.wikipedia.org/wiki/URI` — это URL, так как он указывает на протокол (HTTPS) и адрес сервера для доступа к странице.
URN (Uniform Resource Name)
URN — это подмножество URI, которое идентифицирует ресурс по имени в определённом пространстве имён, но не указывает на его местоположение. URN предназначены для постоянной идентификации ресурсов независимо от их местонахождения. Формат URN: urn:namespace:identifier. Примеры:
urn:isbn:0-395-36341-1— идентификация книги по международному стандартному книжному номеру (ISBN).urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66— уникальный идентификатор UUID.
Другие подтипы
Кроме URL и URN, существуют и другие схемы URI, такие как data: (встраивание данных непосредственно в URI), mailto: (адрес электронной почты), tel: (телефонный номер), file: (локальный файл). Все они являются URI, но не обязательно URL, так как не всегда указывают на сетевой ресурс.
Синтаксические правила и кодирование
URI могут содержать только определённый набор символов: буквы латинского алфавита (A-Z, a-z), цифры (0-9), а также специальные символы, такие как дефис (-), точка (.), подчёркивание (_), тильда (~) и некоторые другие. Все остальные символы (включая пробелы, кириллицу, знаки пунктуации) должны быть закодированы в формате процентного кодирования (percent-encoding). Например, пробел кодируется как %20, кириллическая буква «А» — как %D0%90. Кодирование позволяет передавать URI через протоколы, поддерживающие только ASCII.
Нормализация URI
Для обеспечения уникальности и сопоставимости URI применяется нормализация — приведение URI к каноническому виду. Основные правила нормализации:
- Приведение схемы и хоста к нижнему регистру (например,
HTTP://EXAMPLE.COM→http://example.com`). - Удаление избыточных сегментов пути (например,
/a/b/../c→/a/c). - Добавление завершающего слеша в пути, если это подразумевается схемой (например,
http://example.comhttp://example.com/).→ - Декодирование символов, которые не обязательно кодировать (например,
%41→A).
Применение URI
URI используются повсеместно в информационных технологиях:
- Веб-браузеры: адресная строка браузера содержит URI для загрузки веб-страниц, изображений и других ресурсов.
- Веб-сервисы и API: RESTful API используют URI для идентификации ресурсов (например,
https://api.example.com/users/123`). - XML и RDF: URI служат идентификаторами для элементов и атрибутов в XML-документах, а также для ресурсов в семантической паутине (RDF).
- Системы управления контентом: URI используются для создания постоянных ссылок на статьи, страницы и медиафайлы.
- Базы данных: URI могут идентифицировать записи или объекты в распределённых системах.
- Электронная почта: протокол SMTP использует URI схемы
mailto:для создания ссылок на адреса.
URI в контексте законодательства РФ
В Российской Федерации использование URI регулируется общими нормами об информации и связи. Согласно Федеральному закону «Об информации, информационных технологиях и о защите информации» (№ 149-ФЗ), URI являются частью сетевых адресов, которые могут быть включены в Единый реестр запрещённой информации (реестр Роскомнадзора). Доступ к URI, содержащим материалы, признанные экстремистскими или террористическими, ограничивается. Например, если URI ведёт на сайт организации, признанной террористической и запрещённой в РФ (например, ИГИЛ — террористическая организация, запрещена в РФ), такой URI блокируется провайдерами. Также URI, содержащие призывы к экстремистской деятельности или дискредитации органов власти, могут быть внесены в реестр и заблокированы.
Интересные факты
- Максимальная длина URI не ограничена стандартом, но на практике браузеры и серверы имеют ограничения. Например, Internet Explorer поддерживал URI длиной до 2083 символов, а сервер Apache — до 8192 символов.
- Схема
javascript:(например,javascript:void(0)) не является стандартным URI, но используется в HTML для выполнения кода. - В 2001 году была предложена схема
info:для идентификации информационных ресурсов, не имеющих сетевого адреса, но она не получила широкого распространения. - URI могут быть относительными — они указывают на ресурс относительно текущего контекста (например,
/images/logo.pngв HTML-документе). Относительные URI преобразуются в абсолютные с помощью базового URI.
Источники
- RFC 3986 — Uniform Resource Identifier (URI): Generic Syntax (2005)
- RFC 2396 — Uniform Resource Identifiers (URI): Generic Syntax (1998, устаревший)
- RFC 1630 — Universal Resource Identifiers in WWW (1994)
- Бернерс-Ли, Т. «Плетя паутину: истоки и будущее Всемирной паутины» (1999)
- Федеральный закон «Об информации, информационных технологиях и о защите информации» от 27.07.2006 № 149-ФЗ
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →