Whitelist доменов

Настройте CORS для RUM-приложений, чтобы контролировать, какие домены могут отправлять данные.

Зачем нужен whitelist доменов?

Преимущества для безопасности:

  • предотвращение неавторизованной отправки данных
  • блокировка спама/поддельных сессий
  • защита квоты API
  • обеспечение целостности данных

Добавление доменов

Dashboard → Observability → Apps → [RUM App] → Settings → Domains

Точное совпадение

example.com
www.example.com
app.example.com

Wildcard для поддоменов

*.example.com  # Matches: app.example.com, admin.example.com, etc.

Несколько доменов

Разделяйте переводом строки или запятой:

example.com
*.example.com
myapp.com
www.myapp.com

Окружения для разработки

Localhost

localhost
localhost:3000
localhost:8080
127.0.0.1
127.0.0.1:3000

Preview-деплои

Preview-URL для Vercel, Netlify:

*.vercel.app
*.netlify.app
preview-*.example.com

Настройка CORS

Эндпоинт RUM применяет CORS:

Предварительный запрос (OPTIONS)

Браузер отправляет:

OPTIONS /v1/ingest HTTP/1.1
Origin: https://example.com
Access-Control-Request-Method: POST

StatusRadar отвечает:

Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: POST
Access-Control-Max-Age: 86400

Основной запрос (POST)

Если домен разрешён:

HTTP/1.1 202 Accepted
Access-Control-Allow-Origin: https://example.com

Если домен заблокирован:

HTTP/1.1 403 Forbidden
{"error": "Domain not whitelisted"}

Устранение неполадок

Ошибка CORS в консоли

Access to fetch at 'https://rum.statusradar.dev/v1/ingest' 
from origin 'https://mysite.com' has been blocked by CORS policy

Решение:

  1. Добавьте mysite.com в whitelist доменов
  2. Подождите 1-2 минуты, пока очистится кэш
  3. Выполните жёсткое обновление (Ctrl+Shift+R)

Поддомен не работает

Проблема: добавлен example.com, но www.example.com заблокирован

Решение: добавьте оба ИЛИ используйте wildcard:

example.com
*.example.com

Localhost заблокирован

Решение: добавьте варианты localhost:

localhost
localhost:3000
127.0.0.1:3000

Меняющиеся preview-URL

Для динамических preview-URL (например, pr-123.vercel.app):

Решение: используйте wildcard:

*.vercel.app
*.netlify.app

Лучшие практики безопасности

СТОИТ:

  • добавлять в whitelist только подконтрольные вам домены
  • использовать wildcard умеренно
  • удалять неиспользуемые домены
  • отслеживать неавторизованные попытки

НЕ СТОИТ:

  • добавлять в whitelist * (все домены)
  • оставлять тестовые домены в продакшене
  • публично делиться API-ключами
  • игнорировать ошибки CORS

Кастомные домены (план Pro)

Используйте свой собственный домен для эндпоинта RUM:

  1. Settings → Custom Domain
  2. Добавьте CNAME-запись:
    rum.yoursite.com → rum.statusradar.dev
  3. Подтвердите владение
  4. Обновите эндпоинт SDK:
    rum.configure({
      endpoint: 'https://rum.yoursite.com/v1/ingest'
    });

Преимущества:

  • обход блокировщиков рекламы (меньше вероятность блокировки)
  • единство бренда
  • собственный SSL-сертификат

Управление через API

Список доменов

curl -H "Authorization: Bearer $API_KEY" \
  https://statusradar.dev/api/observability/apps/{app_id}/domains

Добавление домена

curl -X POST \
  -H "Authorization: Bearer $API_KEY" \
  -d '{"domain": "newsite.com"}' \
  https://statusradar.dev/api/observability/apps/{app_id}/domains

Удаление домена

curl -X DELETE \
  -H "Authorization: Bearer $API_KEY" \
  https://statusradar.dev/api/observability/apps/{app_id}/domains/{domain_id}

Следующие шаги