Кратко

  • <base href> задаёт адрес, от которого в HTML-документе рассчитываются относительные ссылки. Надпись chapter.html остаётся прежней, а полный адрес назначения может измениться.
  • HTML 2.0 описывал этот приём для документов вне привычного места. Поздние стандарты уточнили приоритет, правило первого элемента и ограничение base-uri.

Указатели на карте стоят как стояли. На одном написано «следующая улица», на другом — «картинки». Переместили лишь точку, от которой карта отсчитывает расстояния. Теперь та же «следующая улица» находится в другом городе. HTML-элемент <base href> способен сделать это с относительными адресами страницы: короткие строки не меняются, а браузер вычисляет их полные назначения от нового общего начала.

Когда правило появилось в стандарте, у него была полезная мирная работа. RFC 1866, описавший HTML 2.0 в ноябре 1995 года, предлагал необязательный BASE для документов, которые читают вне исходного окружения. Страницу могли переслать, сохранить или открыть в другом месте. В ней оставалось images/logo.gif, но не было ясно, откуда брать папку images. Абсолютный базовый адрес внутри документа сохранял контекст для коротких ссылок. RFC показывает расчёт на примере изображения. Страница могла отправиться в дорогу со своим адресом отправителя.

HTML 4.01, опубликованный в декабре 1999 года, закрепил порядок. BASE размещается в заголовке документа до ссылок на внешние ресурсы. Указанный там адрес имеет приоритет над сведениями, пришедшими вместе с протоколом, а затем над местом самой страницы. Ссылки, картинки, таблицы стилей и адреса обработки форм могут быть относительными. Одна перестановка начальной точки сдвигает сразу несколько маршрутов. В примере стандарта ../cages/birds.gif приводит к определённому полному пути именно из-за выбранной базы. Маленькая запись вверху страницы стала её общим диспетчером направлений.

RFC 3986 от января 2005 года объяснил более широкую иерархию. Базовый URI, встроенный в содержимое, стоит выше адреса внешнего контейнера и URL, по которому содержимое получили. Благодаря этому документ в письме или архиве сохраняет смысл своих относительных путей. RFC описывает разрешение URI вообще; HTML даёт для него конкретный элемент. Адрес получения страницы и адрес, от которого считаются её ссылки, могут различаться. Страница не переезжает. Меняется география внутри неё.

Современный HTML Standard WHATWG даёт наглядную пару: <base href="/book/"> превращает href="chapter.html" в /book/chapter.html. Без объявления браузер использует запасной базовый адрес документа. Если элементов base с href несколько, действует первый по порядку дерева. Отдельный атрибут target может определять место открытия ссылок и форм по умолчанию; для него существует собственное правило первого значения. База адресов и цель навигации соседствуют в одном элементе, но отвечают за разные решения.

Браузер проверяет объявленную базу. Неверный URL, а также data: и javascript: в этой роли заставляют современный алгоритм вернуться к запасному адресу. Ограничение может задать и политика безопасности документа. CSP второго уровня ввела директиву base-uri, которая ограничивает адреса, способные стать базой страницы. Это самостоятельное правило; оно не появляется автоматически из default-src. Удобную общую точку отсчёта можно держать в разрешённых пределах.

Редактору нравится сила одного изменения: переехал раздел — поправь общий адрес вместо десятков ссылок. Та же сила делает ошибку массовой. Читатель видит chapter.html и уверен, что понимает направление. Браузер знает больше: он соединяет короткий путь с базой документа и её ограничениями. Так определяется реальный адрес, по которому уйдёт запрос.

В 1995 году BASE помогал путешествующему документу помнить дом. В 1999-м стандарт расставил приоритеты. Сегодня правила уточняют первую действующую запись и условия отказа. В основе остаётся простое устройство: множество указателей делит одну начальную точку. Передвиньте её — и все дороги сменят город, даже если на указателях не стёрлась ни буква.