CORS recherche/alertes (fusion #68/#69) : allowlist soeurs prod+dev explicites
CI / test (push) Failing after 3m51s
CI / test (push) Failing after 3m51s
This commit is contained in:
+12
-4
@@ -9,9 +9,14 @@ testables sans base ni serveur.
|
|||||||
recherche Gitea de la page ``/search`` (titres + corps, tous états,
|
recherche Gitea de la page ``/search`` (titres + corps, tous états,
|
||||||
tous projets du workspace) et la regroupe par dépôt.
|
tous projets du workspace) et la regroupe par dépôt.
|
||||||
- La CORS bornée n'autorise que ``GET /api/search``, et seulement
|
- La CORS bornée n'autorise que ``GET /api/search``, et seulement
|
||||||
pour les origines sœurs résolues par ``app.config`` (explicite >
|
pour les origines sœurs officielles **prod ET dev, listées
|
||||||
hôte de la requête > dérivation > défaut officiel — donc ``-dev``
|
explicitement** (``PROD_ORIGINS | DEV_ORIGINS``), **plus** les
|
||||||
reste ``-dev``), jamais ``*``. Le middleware est un ASGI pur :
|
origines résolues par ``app.config`` — jamais ``*``. Correctif
|
||||||
|
2026-10-28 (fusion #68/#69, matrice constatée par Bruno) :
|
||||||
|
l'ancienne allowlist ne contenait que l'environnement résolu
|
||||||
|
(prod OU dev), donc une page de l'autre environnement voyait sa
|
||||||
|
section afficher « Injoignable depuis cet hôte (CORS ou réseau) ».
|
||||||
|
Le middleware est un ASGI pur :
|
||||||
il répond lui-même aux preflights OPTIONS (qui ne portent jamais
|
il répond lui-même aux preflights OPTIONS (qui ne portent jamais
|
||||||
de cookies, donc qu'``AuthMiddleware`` refuserait sinon) et ajoute
|
de cookies, donc qu'``AuthMiddleware`` refuserait sinon) et ajoute
|
||||||
les en-têtes aux réponses de recherche, sans toucher aux autres
|
les en-têtes aux réponses de recherche, sans toucher aux autres
|
||||||
@@ -97,7 +102,10 @@ def sister_origins(
|
|||||||
origin = origin_of((resolved or {}).get(key))
|
origin = origin_of((resolved or {}).get(key))
|
||||||
if origin:
|
if origin:
|
||||||
origins.add(origin)
|
origins.add(origin)
|
||||||
return frozenset(origins)
|
# Correctif 2026-10-28 : prod ET dev toujours, quelle que soit
|
||||||
|
# la résolution — ``resolved`` n'ajoute que des origines de
|
||||||
|
# configuration sans jamais retirer une origine officielle.
|
||||||
|
return frozenset(origins) | PROD_ORIGINS | DEV_ORIGINS
|
||||||
|
|
||||||
|
|
||||||
def cors_headers_for(
|
def cors_headers_for(
|
||||||
|
|||||||
Reference in New Issue
Block a user