diff --git a/app/middleware/recherche_cors.py b/app/middleware/recherche_cors.py index 0c6d029..16e20e4 100644 --- a/app/middleware/recherche_cors.py +++ b/app/middleware/recherche_cors.py @@ -10,6 +10,8 @@ Ce module n'autorise donc que : écritures) ; - les origines sœurs : les origines officielles **prod ET dev, listées explicitement** (``PROD_ORIGINS | DEV_ORIGINS``), **plus** + les origines du service d'agents (``AGENT_ORIGINS`` : console + Spark prod ET dev — fédération console, défaut 2), **plus** celles résolues par ``app.services.draco_urls.toutes()`` (explicite > hôte > dérivation > défaut officiel) — jamais ``*``. Correctif 2026-10-28 (fusion #68/#69, matrice constatée par @@ -48,6 +50,14 @@ DEV_ORIGINS = frozenset({ "https://tiktak-dev.dracodev.net", "https://kanbante-dev.dracodev.net", }) +# Origines du service d'agents (console Spark) : la page de +# recherche de la console appelle /api/search depuis le navigateur +# avec le cookie SSO — sans ces deux origines, le navigateur refuse +# la lecture (fédération console, défaut 2). Jamais "*". +AGENT_ORIGINS = frozenset({ + "https://agent.dracodev.net", + "https://agent-dev.dracodev.net", +}) # Clés de draco_urls.toutes() qui sont des applications sœurs. _SOEUR_KEYS = ("obsigate", "flowdeck", "tiktak", "kanbante") @@ -113,7 +123,7 @@ def sister_origins(resolved: dict | None = None, request_host: str | None = None # l'environnement de la requête, désormais inclus d'office). # ``resolved`` n'ajoute que des origines de configuration sans # jamais retirer une origine officielle. - origins |= PROD_ORIGINS | DEV_ORIGINS + origins |= PROD_ORIGINS | DEV_ORIGINS | AGENT_ORIGINS return frozenset(origins)