URI
Оригинальное название: Uniform Resource Identifier (URI)
Коротко
Строка, которая однозначно обозначает ресурс: веб-страницу, почтовый ящик, книгу, телефон. Общее понятие, частными случаями которого являются URL и URN.
Что такое «URI»
Правила записи идентификаторов ресурсов описаны в стандарте RFC 3986 2005 года, одним из авторов которого был Тим Бернерс-Ли. Смысл в том, чтобы у любой вещи, к которой обращаются программы, было имя по единому синтаксису. Если имя одновременно говорит, где и как ресурс получить, это URL. Если оно только называет ресурс, не указывая места, это URN. Оба — разновидности URI, и в повседневной речи слова часто путают.
Из каких частей состоит
Общая схема: схема:[//источник]путь[?запрос][#фрагмент].
- Схема — как понимать остальное:
https,mailto,tel,urn. - Источник — хост, при необходимости с портом и данными пользователя:
shop.example.ru:8443. - Путь — иерархическое имя ресурса внутри источника.
- Запрос — дополнительные параметры после знака вопроса.
- Фрагмент — часть ресурса после решётки; браузер на сервер его не отправляет. Подробнее — в статье про идентификатор фрагмента.
URI, которые не являются адресами страниц
mailto:info@example.ru?subject=Заявка
tel:+74951234567
urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66
data:text/plain;charset=utf-8,Hello
Ссылка mailto: открывает почтовую программу, tel: на смартфоне предлагает позвонить. URN с UUID просто называет объект, не говоря, где его взять. Схема data: содержит сами данные прямо внутри строки — так в HTML и CSS встраивают маленькие картинки. Все они подчиняются общему синтаксису, но страницей сайта не являются.
Кодирование символов
Стандарт разрешает в URI ограниченный набор символов латиницы, цифр и знаков. Всё остальное — кириллица, пробелы, кавычки — кодируется процентами: каждый байт в UTF-8 записывается как % и две шестнадцатеричные цифры. Слово «кот» в пути превращается в %D0%BA%D0%BE%D1%82, пробел — в %20. Браузер показывает пользователю красивую кириллицу, но по сети уходит закодированная строка. Для этого существует расширение стандарта — интернационализированные идентификаторы IRI, работающие поверх Unicode. Ошибки начинаются, когда одну и ту же строку кодируют дважды: в логах появляются адреса вида %25D0%25BA, и ссылка ведёт на несуществующую страницу.

