Приём с чужого домена
Браузер не даст странице обратиться к data.layero.ru, если её домен не
разрешён базой: Access-Control-Allow-Origin мы не ставим в * никогда —
при аутентификации по ключу это не упрощение, а снятие защиты.
Разрешённые домены складываются из двух списков.
1. Домены подключённых проектов разрешаются сами
Проект, подключённый к базе, получает право звать её из браузера
автоматически: и апекс (<проект>.layero.app), и его собственные домены.
Ничего настраивать не нужно.
2. Источники приёма — для чужих сайтов
Если форму нужно поставить на сайт, который к базе не подключён (сайт клиента, лендинг на чужой платформе), добавьте его домен в источники приёма:
curl -X POST "https://api.layero.ru/organizations/<организация>/databases/<id>/api/origins" \
-H "authorization: Bearer <токен>" -H "content-type: application/json" \
-d '{"origin": "https://zarya.example", "note": "лендинг клиента"}'
# посмотреть оба списка сразу
curl "https://api.layero.ru/organizations/<организация>/databases/<id>/api/origins" \
-H "authorization: Bearer <токен>"
🚨 Это не то же самое, что подключить проект к базе. Подключение проекта выдаёт его ролям права на таблицы базы и кладёт строку подключения в его переменные окружения — то есть отдаёт базу целиком. Источник приёма не выдаёт ни грантов, ни строки подключения: он снимает ровно один запрет — браузерный.
Что доступно домену из списка, по-прежнему решают ключ, гранты и RLS. Для приёма заявок это обычно одна публичная функция и ни одной открытой таблицы — см. Функции и RPC.
Формат
https://домен или https://домен:порт — так, как это присылает браузер.
Путь и * не принимаются: путь в Origin не приезжает вовсе, а звёздочка
означала бы «любая страница интернета от имени вашего посетителя».
localhost разрешён всегда — иначе разработка невозможна до первого деплоя.
Правка списка применяется за секунды: отказ по устаревшему кешу шлюз перепроверяет свежим списком, а не отдаёт из кеша. Отсюда и потолок — несколько секунд, а не минута ожидания, как было раньше.