В веб-платформах геосервисов, включая HERE Technologies, механизм контроля доступа к API часто опирается на HTTP-заголовок Referer. Он передаётся браузером автоматически при загрузке ресурсов и позволяет серверу определить, с какого домена инициирован запрос.
При использовании JavaScript SDK карт ключ API (API Key) привязывается не только к самому ключу, но и к набору разрешённых источников запросов. Это формирует слой защиты, предотвращающий:
Проверка выполняется на стороне серверов HERE: каждый запрос
анализируется по полю Referer и сопоставляется с белым
списком доменов, заданных в консоли разработчика.
Пример типичного ограничения:
https://example.com/*https://maps.example.com/*http://localhost:* (для разработки)Если домен отсутствует в списке, запрос к тайлам, геокодингу или JS-API отклоняется с ошибкой авторизации.
HTTP Referer не является абсолютно надёжным источником идентификации:
Поэтому в современных архитектурах Referer используется только как дополнительный слой защиты, а не как единственный механизм контроля доступа.
Механизм Cross-Origin Resource Sharing (CORS) определяет, каким образом браузер выполняет запросы между разными доменами.
В случае HERE Maps API CORS критически важен, поскольку:
Браузер по умолчанию запрещает запросы к чужим доменам. CORS вводит механизм явного разрешения через HTTP-заголовки:
Access-Control-Allow-OriginAccess-Control-Allow-MethodsAccess-Control-Allow-HeadersСервер HERE отвечает с корректными заголовками, разрешающими доступ доверенным источникам.
Для сложных запросов браузер выполняет предварительный запрос
OPTIONS. Это особенно важно при:
Схема работы:
OPTIONS на сервер HERE.Пример HTTP-обмена:
OPTIONS /v1/geocode HTTP/1.1
Origin: https://example.com
Access-Control-Request-Method: GET
Ответ сервера:
HTTP/1.1 204 No Content
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET, POST
Access-Control-Allow-Headers: Authorization
Referer и CORS решают разные задачи, но в HERE Maps API они работают совместно:
| Механизм | Уровень | Назначение |
|---|---|---|
| Referer | серверный контроль | проверка допустимого домена |
| CORS | браузерный контроль | разрешение cross-origin запросов |
Важно, что:
При создании ключа доступа в панели разработчика HERE Developer Portal задаются ограничения:
Пример логики проверки:
https://site.com/app.Причины:
Access-Control-Allow-Origin;Причины:
localhost без явного разрешения;Причины:
При подключении SDK:
<script src="https://js.api.here.com/v3/3.1/mapsjs-core.js"></script>
происходит несколько уровней запросов:
Каждый из них проходит:
Использование Referer и CORS в связке формирует многоуровневую модель защиты:
Однако архитектура не предполагает:
Для серверных интеграций применяется отдельный контур авторизации, где CORS отсутствует как ограничение, а контроль осуществляется через ключи доступа и токены.
При работе на localhost возникают особенности:
http://localhost:PORT в
список разрешённых доменов;127.0.0.1;Пример корректной конфигурации:
http://localhost:3000http://127.0.0.1:5500В некоторых архитектурах используется сервер-прокси:
Browser → Own Backend → HERE API
В этом случае:
Такой подход применяется при:
При каждом запросе к сервисам HERE Maps происходит последовательная проверка:
Эта многослойная система обеспечивает баланс между удобством использования JavaScript SDK и контролем доступа к геопространственным данным, предоставляемым HERE Technologies.