Настройка ограничений для API-ключа

API-ключ можно привязать к доменам или IP-адресам, чтобы ограничить запросы из других источников. Эта настройка не позволит использовать ваш ключ в чужих сервисах.

Примечание. Ограничение касается только тарифицируемых запросов. На другом сайте карта появится, но все тарифицируемые операции не будут работать.
  1. Какие ограничения можно использовать
  2. Как добавить настройки для API-ключа
  3. Как проверяются ограничения для API-ключа
  4. Как отобразить карту в контейнере

Какие ограничения можно использовать

IP-адрес — адрес устройства, с которого отправлен запрос. Для запросов, отправленных с сайтов, это адрес устройства пользователя (не адрес сервера, на котором размещается сайт). Для запросов, отправленных с сервера или локального устройства, IP-адрес совпадает с внешним адресом сервера или устройства.

Домен — переданный в заголовке Referer запроса домен. Для запросов, отправленных с сайтов, заголовок обычно указывается автоматически и совпадает с адресом страницы. Некоторые сайты используют контейнеры или не передают Referer. Если запрос отправлен с сервера или с локального устройства (например, с помощью curl), заголовок необходимо указать самостоятельно.

Как добавить настройки для API-ключа

Чтобы прописать разрешенные домены и IP-адреса для вашего API-ключа:
  • Выберите нужный вам ключ и нажмите Изменить.
  • Укажите список IP-адресов, с которых можно делать запросы, по одному адресу в строке. Поддерживаются как IPv4, так и IPv6 адреса, а также подсети. Например, можно указать адреса следующим образом:
    192.0.2.0
    192.0.2.0/24
    2001:db8::/32
    Примечание. При загрузке карты используется IP-адрес устройства пользователя. При работе с JSAPI мы рекомендуем использовать ограничение по домену.
  • Укажите список доменов, с которых можно делать запросы. Информация о доменах передается в заголовке Referer. Домены указываются по одному в строке, без указания протокола, порта, URL-схемы и параметров (например, yandex.ru). Все поддомены автоматически добавляются в список разрешенных. Например, можно указать домены следующим образом:
    yandex.ru
    yandex.com
    maps.yandex.ru
    example.com

Введенные ограничения начинают работать через 15 минут после заполнения формы.

Как проверяются ограничения для API-ключа

Проверка ключа производится следующим образом:
  • Если указаны и IP-адрес и домен, достаточно совпадения одного из значений. Например, пользователь с незнакомого IP-адреса может пользоваться картой на указанном сайте.
  • Если указан только домен, он должен совпадать с заголовком Referer.
  • Если указан только IP-адрес, он должен совпадать с IP-адресом адресом источника запроса.
  • Если поля не заполнены, карту можно использовать на любом домене и с любого адреса.

Как отобразить карту в контейнере

При отображении карты в контейнерах, например, WebView или iframe, устройство пользователя может передать некорректный HTTP-referer. Ниже приведены рекомендации по работе с популярными контейнерами.

iframe
Современные браузеры передают адрес загруженной в элементе iframe страницы. Достаточно указать домен страницы с картой в Кабинете разработчика.
Android webView
При использовании webView на Android устройствах необходимо указать заголовок Referer с помощью расширенной функции loadUrl:
// Сайт, который будет загружен в webView.
String url = "http://www.myserver.ru/";

// Карта, указывающая заголовок Referer.
Map<String, String> headers = new HashMap<String, String>();
headers.put("Referer", "http://www.mymap.ru/map.html");

// Загрузка webView с необходимыми параметрами.
WebView wv;
wv = (WebView) findViewById(R.id.webview);
wv.loadUrl(url, headers);               
iOS UIWebView
При использовании UIWebView на iOS устройствах необходимо указать заголовок Referer в запросе, отправленном UIWebView. Для этого используется метод - setValue:forHTTPHeaderField:. Например, можно указать его следующим образом:
NSMutableURLRequest* request = ...;
[request setValue:@"https://www.mymap.ru" forHTTPHeaderField: @"Referer"];