Настройка ограничений для API-ключа
API-ключ можно привязать к доменам или IP-адресам, чтобы ограничить запросы из других источников. Эта настройка не позволит использовать ваш ключ в чужих сервисах.
Примечание
Ограничение касается только тарифицируемых запросов. На другом сайте карта появится, но все тарифицируемые операции не будут работать.
Какие ограничения можно использовать
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-схемы и параметров. В качестве значения в заголовкеReferer
указывается URL (например,https://www.yandex.ru
). Все поддомены автоматически добавляются в список разрешенных. Например, можно указать домены следующим образом:https://www.yandex.ru https://www.yandex.com https://www.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:@"http://www.mymap.ru" forHTTPHeaderField: @"Referer"];