Add /api/health endpoint and opt-in CORS (ALLOWED_ORIGINS) #7
Loading…
Reference in a new issue
No description provided.
Delete branch "feature/5_api_health_and_cors"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Что сделано
Серверная часть плана UI-хаба агентов (#1, этап A из обсуждения в #1):
GET /api/health— healthcheck с той же Bearer-авторизацией, что и остальное/api:200+{ status: "ok"|"degraded", sessionsDir, sessionsDirExists, uptimeMs }при верном токене;401без токена / с неверным.Позволяет UI-хабу (этап B, #6) различать «машина/порт недоступны», «неверный токен» и «OK».
ALLOWED_ORIGINS— новая опциональная переменная окружения: список origin через запятую. Для запросов к/api/*с разрешённымOriginотдаются CORS-заголовки (Access-Control-Allow-Originс эхом origin +Vary: Origin, методыGET, OPTIONS, заголовкиAuthorization, Content-Type), preflightOPTIONSотвечает204. Переменная не задана — поведение прежнее (same-origin, без CORS-заголовков). Preflight отвечает всегда, но без заголовков для неразрешённых origin — браузер такой запрос отклоняет.ALLOWED_ORIGINSв таблице конфигурации README,GET /api/healthв разделе API, пример curl-проверки в разделе systemd, закомментированная переменная вdeploy/pi-web-monitor.service.Обратно совместимо: без
ALLOWED_ORIGINSповедение сервера не меняется.Как проверить
npm test— 33 теста (5 новых: healthcheck ×2, CORS ×3), все зелёные.curl -s -H "Authorization: Bearer $TOKEN" http://127.0.0.1:8787/api/health→ JSON соstatus: ok.ALLOWED_ORIGINS=http://example.com+ запрос сOrigin: http://example.com→ заголовокAccess-Control-Allow-Origin: http://example.com; с другим origin — заголовка нет.Closes #5