Единый указатель ресурса (англ. Uniform Resource Locator, URL) — единообразный локатор (определитель местонахождения) ресурса. Ранее назывался Universal Resource Locator — универсальный указатель ресурса. URL служит стандартизированным способом записи адреса ресурса в сети Интернет.
История URL был изобретён Тимом Бернерсом-Ли в 1990 году в стенах Европейского совета по ядерным исследованиям (фр. Conseil Européen pour la Recherche Nucléaire, CERN) в Женеве, Швейцария. URL стал фундаментальной инновацией в Интернете. Изначально URL предназначался для обозначения мест расположения ресурсов (чаще всего файлов) во Всемирной паутине. Сейчас URL применяется для обозначения адресов почти всех ресурсов Интернета. URL позиционируется как часть более общей системы идентификации ресурсов URI, сам термин URL постепенно уступает место более широкому термину URI. Стандарт URL регулируется организацией IETF и её подразделениями.
Структура URL Изначально локатор URL был разработан как система для максимально естественного указания на местонахождения ресурсов в сети. Локатор должен был быть легко расширяемым и использовать лишь ограниченный набор ASCII‐символов (к примеру, пробел никогда не применяется в URL). В связи с этим, возникла следующая традиционная форма записи URL:
схема схема обращения к ресурсу; в большинстве случаев имеется в виду сетевой протокол логин имя пользователя, используемое для доступа к ресурсу пароль пароль указанного пользователя хост полностью прописанное доменное имя хоста в системе DNS или IP-адрес хоста в форме четырёх групп десятичных чисел, разделённых точками; числа — целые в интервале от 0 до 255. порт порт хоста для подключения URL-путь уточняющая информация о месте нахождения ресурса; зависит от протокола. параметры строка запроса с передаваемыми на сервер (методом GET) параметрами. Разделитель параметров — знак &. Пример: ?параметр_1=значение_1&параметр_2=значение_2&параметр3=значение_3
якорь идентификатор «якоря», ссылающегося на некоторую часть (раздел) открываемого документа. С развитием AJAX в этой части стали размещать параметры для JavaScript на странице, и страница в зависимости от указанного якоря может в браузере выглядеть по-разному. Для обеспечения возможности индексирования подобных страниц поисковыми системами компания Google предложила подход, предполагающий использование знака ! в начале якоря и некоторую поддержку на сервере сайта. Тим Бернерс-Ли признаёт, что символ двойной косой черты в структуре URL является избыточным.
ftp — Протокол передачи файлов FTP http — Протокол передачи гипертекста HTTP rtmp — Real Time Messaging Protocol проприетарный протокол потоковой передачи данных, в основном используется для передачи потокового видео и аудиопотоков с веб-камер через интернет. rtsp — Потоковый протокол реального времени. https — Специальная реализация протокола HTTP, использующая шифрование (как правило, SSL или TLS) gopher — Протокол Gopher mailto — Адрес электронной почты news — Новости Usenet nntp — Новости Usenet через протокол NNTP irc — Протокол IRC smb — Протокол SMB/CIFS prospero — Служба каталогов Prospero Directory Service telnet — Ссылка на интерактивную сессию Telnet wais — База данных системы WAIS xmpp — Протокол XMPP (часть Jabber) file — Имя локального файла data — Непосредственные данные (Data: URL) tel — звонок по указанному телефону Экзотические схемы URL:
afs — Глобальное имя файла в файловой системе Andrew File System cid — Идентификатор содержимого для частей MIME mid — Идентификатор сообщений для электронной почты mailserver — Доступ к данным с почтовых серверов nfs — Имя файла в сетевой файловой системе NFS tn3270 — Эмуляция интерактивной сессии Telnet 3270 z39.50 — Доступ к службам ANSI Z39.50 skype — Протокол Skype smsto — Открытие редактора SMS в некоторых мобильных телефонах ed2k — Файлообменная сеть eDonkey, построенная по принципу P2P market — Android Маркет steam — протокол Steam bitcoin — Криптовалюта Биткойн Схемы URL в браузерах:
view-source — просмотр исходного кода указанной web-страницы в различных браузерах. chrome — служебные страницы браузера Google Chrome или браузеров на движке Gecko[3]. opera — служебные страницы браузера Opera.
Ограничения Формально, длина URL не ограничена, но браузеры имеют ограничения по длине URL. Не рекомендуется использовать URL длиной более 2048 символов, так как Microsoft Internet Explorer имеет именно такое ограничение.
Инициатива PURL Ещё один кардинальный недостаток URL состоит в отсутствии гибкости. Ресурсы во Всемирной паутине и Интернете перемещаются, а ссылки в виде URL остаются, указывая на уже отсутствующие ресурсы. Это особенно болезненно для электронных библиотек, каталогов и энциклопедий. Для решения этой проблемы были предложены постоянные локаторы PURL (англ. Persistent Uniform Resource Locator). В сущности это те же URL, но они указывают не на конкретное место расположения ресурса, а на запись в базе данных PURL, где, в свою очередь, записан уже конкретный URL‐адрес ресурса. При обращении к PURL сервер находит нужную запись в этой базе данных и перенаправляет запрос уже на конкретное местоположение ресурса. Если адрес ресурса меняется, то нет нужды исправлять все бесчисленные ссылки на него — достаточно лишь изменить запись в БД. В настоящий момент эта идея не стандартизирована и не имеет широкого распространения.
URL был изобретён Тимом Бернерсом-Ли в 1990 году в стенах Европейского совета по ядерным исследованиям (фр. Conseil Européen pour la Recherche Nucléaire, CERN) в Женеве, Швейцария. URL стал фундаментальной инновацией в Интернете. Изначально URL предназначался для обозначения мест расположения ресурсов (чаще всего файлов) во Всемирной паутине. Сейчас URL применяется для обозначения адресов почти всех ресурсов Интернета. URL позиционируется как часть более общей системы идентификации ресурсов URI, сам термин URL постепенно уступает место более широкому термину URI. Стандарт URL регулируется организацией IETF и её подразделениями.
Изначально локатор URL был разработан как система для максимально естественного указания на местонахождения ресурсов в сети. Локатор должен был быть легко расширяемым и использовать лишь ограниченный набор ASCII‐символов (к примеру, пробел никогда не применяется в URL). В связи с этим, возникла следующая традиционная форма записи URL:
В этой записи:
схема
схема обращения к ресурсу; в большинстве случаев имеется в виду сетевой протокол
логин
имя пользователя, используемое для доступа к ресурсу
пароль
пароль указанного пользователя
хост
полностью прописанное доменное имя хоста в системе DNS или IP-адрес хоста в форме четырёх групп десятичных чисел, разделённых точками; числа — целые в интервале от 0 до 255.
порт
порт хоста для подключения
URL-путь
уточняющая информация о месте нахождения ресурса; зависит от протокола.
параметры
строка запроса с передаваемыми на сервер (методом GET) параметрами. Разделитель параметров — знак &.
Пример: ?параметр_1=значение_1&параметр_2=значение_2&параметр3=значение_3
якорь
идентификатор «якоря», ссылающегося на некоторую часть (раздел) открываемого документа. С развитием AJAX в этой части стали размещать параметры для JavaScript на странице, и страница в зависимости от указанного якоря может в браузере выглядеть по-разному. Для обеспечения возможности индексирования подобных страниц поисковыми системами компания Google предложила подход, предполагающий использование знака ! в начале якоря и некоторую поддержку на сервере сайта.
Тим Бернерс-Ли признаёт, что символ двойной косой черты в структуре URL является избыточным.
Общепринятые схемы (протоколы) URL включают:
ftp — Протокол передачи файлов FTP
http — Протокол передачи гипертекста HTTP
rtmp — Real Time Messaging Protocol проприетарный протокол потоковой передачи данных, в основном используется для передачи потокового видео и аудиопотоков с веб-камер через интернет.
rtsp — Потоковый протокол реального времени.
https — Специальная реализация протокола HTTP, использующая шифрование (как правило, SSL или TLS)
gopher — Протокол Gopher
mailto — Адрес электронной почты
news — Новости Usenet
nntp — Новости Usenet через протокол NNTP
irc — Протокол IRC
smb — Протокол SMB/CIFS
prospero — Служба каталогов Prospero Directory Service
telnet — Ссылка на интерактивную сессию Telnet
wais — База данных системы WAIS
xmpp — Протокол XMPP (часть Jabber)
file — Имя локального файла
data — Непосредственные данные (Data: URL)
tel — звонок по указанному телефону
Экзотические схемы URL:
afs — Глобальное имя файла в файловой системе Andrew File System
cid — Идентификатор содержимого для частей MIME
mid — Идентификатор сообщений для электронной почты
mailserver — Доступ к данным с почтовых серверов
nfs — Имя файла в сетевой файловой системе NFS
tn3270 — Эмуляция интерактивной сессии Telnet 3270
z39.50 — Доступ к службам ANSI Z39.50
skype — Протокол Skype
smsto — Открытие редактора SMS в некоторых мобильных телефонах
ed2k — Файлообменная сеть eDonkey, построенная по принципу P2P
market — Android Маркет
steam — протокол Steam
bitcoin — Криптовалюта Биткойн
Схемы URL в браузерах:
view-source — просмотр исходного кода указанной web-страницы в различных браузерах.
chrome — служебные страницы браузера Google Chrome или браузеров на движке Gecko[3].
opera — служебные страницы браузера Opera.
Формально, длина URL не ограничена, но браузеры имеют ограничения по длине URL. Не рекомендуется использовать URL длиной более 2048 символов, так как Microsoft Internet Explorer имеет именно такое ограничение.
Ещё один кардинальный недостаток URL состоит в отсутствии гибкости. Ресурсы во Всемирной паутине и Интернете перемещаются, а ссылки в виде URL остаются, указывая на уже отсутствующие ресурсы. Это особенно болезненно для электронных библиотек, каталогов и энциклопедий. Для решения этой проблемы были предложены постоянные локаторы PURL (англ. Persistent Uniform Resource Locator). В сущности это те же URL, но они указывают не на конкретное место расположения ресурса, а на запись в базе данных PURL, где, в свою очередь, записан уже конкретный URL‐адрес ресурса. При обращении к PURL сервер находит нужную запись в этой базе данных и перенаправляет запрос уже на конкретное местоположение ресурса. Если адрес ресурса меняется, то нет нужды исправлять все бесчисленные ссылки на него — достаточно лишь изменить запись в БД. В настоящий момент эта идея не стандартизирована и не имеет широкого распространения.