2.1 KiB
2.1 KiB
HMR + IdNot + dev3 via state (mise à jour: 2025-09-24)
Vue d’ensemble
-
HMR (Hot Module Replacement)
- En local, Next.js sert le HMR (ex: port 3000) et recharge les modules sans redémarrage.
- Les appels API sont effectués en same-origin via le proxy Nginx/compose: le front cible
/api/...
, Nginx route vers dev3. Pas de CORS ni reconfig lors des reloads. - En dev4/prod, pas de HMR:
next start
sert l’app buildée sous/lecoffre/
.
-
Émission du state (dev3)
- Front →
POST /api/v1/idnot/state
(same-origin/api
). Nginx (dev4) relaie vershttps://dev3.4nkweb.com/api/v1/idnot/state
. - Body:
{ "next_url": "https://dev4.4nkweb.com/lecoffre/authorized-client" }
. - Réponse:
{ "state": "<state_signé>" }
. CORS dynamique côté Nginx (dev3) autorise l’origine dev4.
- Front →
-
Redirection IdNot avec state
- URL d’autorisation:
- base =
NEXT_PUBLIC_IDNOT_BASE_URL + NEXT_PUBLIC_IDNOT_AUTHORIZE_ENDPOINT
client_id = NEXT_PUBLIC_IDNOT_CLIENT_ID
redirect_uri = NEXT_PUBLIC_IDNOT_REDIRECT_URI_FIXED
(stable)scope = openid,profile
,response_type = code
state = <state_signé>
(depuis l’API state dev3)
- base =
- IdNot renvoie
code
(et lestate
validé côté backend) vers dev3, qui enchaîne selonnext_url
.
- URL d’autorisation:
-
Pourquoi ça marche bien avec HMR
- Le front n’appelle pas dev3 directement depuis le navigateur: toujours
/api
(reverse-proxy Nginx). - Nginx masque les headers CORS upstream et réinjecte des headers valides dynamiquement (Origin dev4/local).
- Le
state
est demandé via/api
, donc indépendant du HMR.
- Le front n’appelle pas dev3 directement depuis le navigateur: toujours
-
Canonicalisation URL
- Canonical sous-sous-chemin:
/lecoffre/
. - Next:
basePath: '/lecoffre'
,assetPrefix: '/lecoffre'
,trailingSlash: true
. - Nginx (dev4): rediriger
/lecoffre
→/lecoffre/
; proxy^~ /lecoffre/
vershttp://localhost:3004
.
- Canonical sous-sous-chemin:
-
Validation (script
scripts/deploy_front_ext.sh
)- Vérifie: variables
NEXT_PUBLIC_*
(conteneur vs.env.master
). - CORS dev3: OPTIONS 204 + en-têtes (A-C-A-Origin = dev4).
POST /api/v1/idnot/state
: 200 +state
présent.- Checks publics:
/lecoffre
= 301 →/lecoffre/
,/lecoffre/
= 200.
- Vérifie: variables