URI

    Uniform Resource Identifiers (URI) используются для идентификации «ресурсов» в Интернете. Обычно они используются в качестве целей запросов HTTP, в таком случае URI представляет местоположение физического ресурса, такого как документ, фотография, двоичные данные и т.д. URI также могут использоваться для других действий, например, открытия почтового клиента, отправки текстовых сообщений или выполнение JavaScript, при использовании в других местах, таких как атрибут href HTML-ссылки <a>.

    URL и URN

    URL

    Самый популярный тип URI - это Uniform Resource Locator (URL), который также называют веб-адресом.

    https://developer.mozilla.org
    https://developer.mozilla.org/ru/docs/Learn
    https://developer.mozilla.org/ru/search?q=URL
    

    Любой из этих URL-ов может быть набран в адресной строке браузера чтобы сказать ему загрузить соответствующую страницу (ресурс).

    URL состоит из разных частей, некоторые - обязательны, а другие нет. Более сложный пример:

    http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument
    

    URN

    Uniform Resource Name (URN) - это URI, который идентифицирует ресурс по имени в конкретном пространстве имён.

    urn:isbn:9780141036144
    urn:ietf:rfc:7230
    

    Эти два URN-а соответствуют:

    • книга "1984" Джорджа Оруэлла,
    • IETF спецификация 7230, Hypertext Transfer Protocol (HTTP/1.1): Синтаксис и маршрутизация сообщений.

    Синтаксис Унифицированных Идентификаторов Ресурсов (URI)

    Схема или протокол

    Protocol

    http:// это пример протокола (схемы). Тут описывается какой протокол браузер должен использовать. Обычно это HTTP протокол или его безопасная версия - HTTPS. Интернет требует один из этих двух, но браузеры также знают как работать с некоторыми другими, например mailto: (чтобы открыть почтовый клиент) или ftp: для работы с передачей файлов. Популярные схемы:

    Схема Описание
    data Data URIs
    file Доступ к файлам на локальном компьютере
    ftp File Transfer Protocol (протокол передачи файлов)
    http/https Hyper text transfer protocol (Secure)
    mailto Адрес электронной почты
    ssh Протокол Secure shell для работы с серверами
    tel Телефон
    urn Uniform Resource Names
    view-source Исходный код ресурса
    ws/wss (Зашифрованные) соединения WebSocket

    Владелец (имя хоста)

    Domaine Name

    www.example.com - это доменное имя, идентификатор ответственного за это пространство имён. Идентифицирует, какой именно Веб-сервер получает запрос. Альтернативно, можно просто использовать IP address, но поскольку это не так удобно, то этот способ используется не часто.

    Порт

    Port

    :80 - это порт сервера. Он идентифицирует технические "ворота", которые нужны для доступа к ресурсу на сервере. Обычно порт не указывается, т.к. существуют общепринятые нормы о стандартных портах для HTTP (80 для HTTP и 443 для HTTPS). В других случаях обязательно нужно указывать.

    Путь

    Path to the file

    /path/to/myfile.html - это путь к ресурсу на Веб-сервере. Изначально путь типа этого указывал на физическое место файла на сервере, но сейчас всё чаще это псевдоним или описание некоторого абстрактного ресурса.

    Строка запроса (query string)

    Parameters

    ?key1=value1&key2=value2 - это дополнительные параметры, предоставляемые Веб-серверу. Это список пар "ключ=значение", разделённых символом & . Веб-сервер может использовать эти параметры как дополнительные инструкции, что именно сделать с ресурсом перед отправкой его пользователю. Каждый Веб-сервер имеет свои правила насчёт параметров, и единственный надёжный способ узнать как конкретный Веб-сервер обрабатывает эти параметры - это спросить того, кто контролирует Веб-сервер.

    Фрагмент

    Anchor

    #SomewhereInTheDocument - это "якорь" на другую часть ресурса. Якорь представляет собой что-то вроде "закладки" внутри ресурса, давая браузеру указание показать содержимое с определённого места. В HTML-документе, к примеру, браузер будет скроллить к точке где якорь определён, а на аудио/видео-документе браузер попытается перейти на время, указанное в якоре. Важно что часть, начинающаяся с # - никогда не пересылается серверу в запросе.

    Примечания по использованию

    Когда используются URLы в HTML содержимом, вам стоит использовать только несколько из этих схем. Когда идёт обращение к субресурсам (файлам, которые являются частью большого документа) — вам стоит использовать лишь HTTP и HTTPS. Браузеры сейчас перестают использовать FTP для загрузки ресурсов, из соображений безопасности.

    FTP до сих пор доступен на верхнем уровне (т.е. когда ссылка указывается в адресной строке или в ссылке), но некоторые браузеры могут делегировать загрузку FTP ресурсов другим приложениям.

    Примеры

    https://developer.mozilla.org/ru/docs/Learn
    tel:+1-816-555-1212
    git@github.com:mdn/browser-compat-data.git
    ftp://example.org/resource.txt
    urn:isbn:9780141036144
    mailto:help@supercyberhelpdesk.info
    

    Спецификации

    Спецификация Название
    RFC 7230, раздел 2.7: Uniform Resource Identifiers Hypertext Transfer Protocol (HTTP/1.1): Синтаксис и маршрутизация сообщений

    Читайте также