Ограничение API-ключа по доменам

Ограничение по доменам определяет, на каких сайтах разрешено использовать ваш API-ключ Яндекс Карт.

Например, если карта Mapfolio размещена на сайте example.ru, этот домен необходимо добавить в настройки ключа. Тогда запросы с вашего сайта будут разрешены, а использовать ключ на постороннем сайте не получится.

Что такое домен

Домен — это основная часть адреса сайта.

Например, полный адрес страницы может выглядеть так:

https://example.ru/catalog/shops

Доменом этого сайта является:

example.ru

Адрес конкретной страницы /catalog/shops добавлять не нужно.

Как найти домен своего сайта

  1. Откройте страницу, на которой будет находиться карта Mapfolio.
  2. Посмотрите на адресную строку в верхней части браузера.
  3. Скопируйте адрес.
  4. Удалите из него https:// или http://.
  5. Удалите всё, что находится после первого одиночного символа /.
  6. Оставшаяся часть и будет доменом.
Полный адрес страницы Домен для ограничения
https://example.ru example.ru
https://example.ru/contacts example.ru
https://www.example.ru/catalog example.ru
https://shop.example.ru example.ru
https://project.tilda.ws/page1 project.tilda.ws
http://example.ru:8080/map example.ru

Зачем ограничивать ключ

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

Ограничение по доменам не позволяет использовать найденный ключ на любом другом сайте.

Без ограничения посторонний человек может попытаться использовать ваш ключ для своей карты. Запросы с чужого сайта при этом могут учитываться в ваших лимитах Яндекса.

Как добавить разрешённый домен

  1. Откройте Кабинет разработчика Яндекса.
  2. Войдите в Яндекс ID, на котором был создан ключ.
  3. Откройте подключённый продукт JavaScript API.
  4. Найдите ключ, который используется в Mapfolio.
  5. Нажмите кнопку «Изменить».
  6. Найдите раздел с ограничениями.
  7. Выберите ограничение по домену или HTTP Referer.
  8. Введите домен своего сайта.
  9. Сохраните изменения.

Яндекс рекомендует использовать для JavaScript API именно ограничение по домену: настройка ограничений API-ключа.

Переход к настройкам API-ключа
Ограничение API-ключа по домену

Как правильно записать домен

В поле ограничения нужно указать только домен.

Правильный пример:

example.ru

Не добавляйте:

  • https://;
  • http://;
  • номер порта;
  • адрес отдельной страницы;
  • параметры после знака ?;
  • символы после знака #;
  • пробелы перед доменом и после него.
Введённое значение Правильно или нет Как нужно указать
example.ru Правильно example.ru
https://example.ru Неправильно example.ru
www.example.ru/catalog Неправильно example.ru
example.ru:443 Неправильно example.ru
example.ru/?page=map Неправильно example.ru
project.tilda.ws Правильно project.tilda.ws

Если карта размещена на нескольких сайтах

Один ключ можно настроить для нескольких сайтов. Каждый разрешённый домен необходимо вводить с новой строки.

Например:

  • example.ru
  • second-site.ru
  • project.tilda.ws

После добавления проверьте, что каждый домен находится на отдельной строке.

Если у сайта есть адрес с www

Для сайта, который открывается по адресам example.ru и www.example.ru, обычно достаточно добавить основной домен:

example.ru

Поддомен www будет разрешён автоматически.

Если сайт создан в конструкторе

Если у сайта нет собственного домена, укажите полный поддомен, который выдал конструктор.

Например, сайт открывается по адресу:

https://my-project.tilda.ws

В ограничение нужно добавить:

my-project.tilda.ws

Не добавляйте только tilda.ws, потому что это общий домен конструктора, которым пользуются другие сайты.

Если используется собственный и технический домен

Иногда один сайт доступен сразу по двум адресам:

  • по собственному домену, например example.ru;
  • по техническому адресу конструктора, например my-project.tilda.ws.

Если карта должна работать по обоим адресам, добавьте оба домена — каждый с новой строки.

Нужно ли добавлять домен Mapfolio

Для карты, установленной на вашем сайте, главным разрешённым доменом должен быть домен этого сайта.

Например, если посетители открывают карту на example.ru, добавьте example.ru.

Если предварительный просмотр карты в личном кабинете Mapfolio сообщает, что не разрешён домен lk.mapfolio.ru, дополнительно добавьте:

lk.mapfolio.ru

Ориентируйтесь на домен, указанный непосредственно в сообщении об ошибке.

Почему не нужно ограничивать ключ по IP-адресу

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

Если ограничить JavaScript API одним IP-адресом, карта может работать только у части посетителей или не работать совсем.

Для карты на сайте используйте ограничение по домену — HTTP Referer.

Когда применятся изменения

После сохранения нового домена ограничения могут примениться не сразу.

Яндекс сообщает, что изменения начинают работать в течение 15 минут.

В это время карта может:

  • временно не загружаться;
  • показывать сообщение об ошибке;
  • продолжать работать по старым ограничениям.

Подождите 15 минут, а затем обновите страницу.

Как проверить ограничение

  1. Подождите до 15 минут после сохранения.
  2. Откройте страницу сайта с виджетом Mapfolio.
  3. Полностью обновите страницу.
  4. Убедитесь, что карта загрузилась.
  5. Проверьте перемещение и масштабирование карты.
  6. Откройте несколько точек.
  7. Если у вас несколько разрешённых сайтов, повторите проверку на каждом из них.

Если появилась ошибка загрузки карты

Mapfolio может показать сообщение:

«Не удалось загрузить карту».

В сообщении также может быть указан домен, который отсутствует в ограничениях ключа.

В таком случае:

  1. Запишите указанный домен.
  2. Вернитесь в Кабинет разработчика Яндекса.
  3. Откройте используемый ключ.
  4. Нажмите «Изменить».
  5. Добавьте домен в HTTP Referer.
  6. Сохраните изменения.
  7. Подождите до 15 минут.
  8. Обновите страницу с картой.
Ошибка из-за отсутствующего домена в ограничениях ключа

Ограничение ключа и ограничение виджета — не одно и то же

Ограничения могут настраиваться на двух разных уровнях:

  • в Яндексе ограничивается использование API-ключа;
  • в Mapfolio может ограничиваться использование самого виджета.

Эти настройки не заменяют друг друга.

Настройка Где находится Что защищает
HTTP Referer Кабинет разработчика Яндекса API-ключ Яндекс Карт
Разрешённые домены виджета Настройки виджета Mapfolio Доступ к самому виджету

Частые ошибки

Ошибка Почему карта не работает Как исправить
Указан https://example.ru Добавлен протокол Оставьте example.ru
Указан адрес отдельной страницы В ограничении присутствует лишний путь Удалите всё после домена
Добавлен только технический домен Рабочий домен сайта не разрешён Добавьте оба адреса
Несколько доменов записаны через запятую Яндекс неправильно распознаёт список Введите каждый домен с новой строки
Выбрано ограничение по IP IP посетителей постоянно меняются Используйте HTTP Referer
Изменения проверяются сразу Настройки ещё не применились Подождите до 15 минут
Добавлен домен Mapfolio, но не сайта Ключ не разрешён на опубликованной странице Добавьте домен своего сайта
Указан общий домен конструктора Ограничение получилось слишком широким Добавьте точный поддомен своего проекта

Короткая проверка

Ограничение настроено правильно, если:

  • выбран тип ограничения HTTP Referer;
  • указан домен страницы с виджетом;
  • в адресе нет https://, порта и пути к странице;
  • каждый дополнительный домен введён с новой строки;
  • изменения сохранены;
  • после сохранения прошло до 15 минут;
  • карта загружается на всех нужных сайтах;
  • на посторонних доменах ключ нельзя полноценно использовать.