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 startsert 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_IDredirect_uri = NEXT_PUBLIC_IDNOT_REDIRECT_URI_FIXED(stable)scope = openid,profile,response_type = codestate = <state_signé>(depuis l’API state dev3)
- base =
- IdNot renvoie
code(et lestatevalidé 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
stateest 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 +stateprésent.- Checks publics:
/lecoffre= 301 →/lecoffre/,/lecoffre/= 200.
- Vérifie: variables