diff --git a/.project/concepts/tech-stack/caveat_firefox-lna-blocks-broker-iframe.md b/.project/concepts/tech-stack/caveat_firefox-lna-blocks-broker-iframe.md new file mode 100644 index 0000000..60258d1 --- /dev/null +++ b/.project/concepts/tech-stack/caveat_firefox-lna-blocks-broker-iframe.md @@ -0,0 +1,41 @@ +--- +type: caveat +summary: Firefox 151+ bloque (Local Network Access) le broker hébergé qui embarque l'app de dev locale dans son iframe → iframe blanche, zéro log app, aucune erreur. Ce n'est PAS un bug de code. Fix navigateur — about:config network.lna.enabled=false. +last_checked: 2026-07-13 +--- + +# Firefox LNA bloque l'iframe app du broker en dev local + +## Symptôme + +En dev local, l'app tourne DANS l'iframe du broker hébergé (`nextgraph.eu`/`nextgraph.net` +en HTTPS embarque `festipod.localhost` → `127.0.0.1`). Sur **Firefox 151+**, l'iframe reste +**blanche** : **aucun log `[FestipodData]`/`[NG]`** (l'app JS n'est jamais exécutée), et +**aucune erreur** rouge (le blocage est une décision de politique réseau, pas un throw). Facile +à prendre pour un crash de rendu Festipod — ce n'en est PAS un. + +## Cause + +**Local Network Access (LNA)** : Firefox 151+ (activé par défaut, cf. rollout 149→151) interdit +à un **site public** (le broker HTTPS) d'atteindre une **ressource du réseau local** +(`127.0.0.1`) — y compris l'embarquer en iframe. Le log révélateur (console) : +`Local Network Access detected: ... accessing target "…festipod.localhost…" (127.0.0.1) … prompt action: auto_deny`. + +Deux corollaires qui trompent : +- **Le top-level charge très bien** : ta navigation directe vers `https://festipod.localhost:1355` + (la barrière AccessGateScreen) n'est PAS soumise à LNA. Seul l'**embarquement iframe** par le + broker l'est. Donc « le cert est déjà accepté / l'app se lance » avant l'iframe ≠ l'iframe passera. +- **HTTPS n'y change rien** : LNA vise l'**adresse locale cible**, pas le protocole. Passer + `portless proxy start --https` (app en `https://festipod.localhost`) ne débloque pas. + +## Fix (navigateur, pas code) + +`about:config` → **`network.lna.enabled` = `false`** (drapeau maître : désactive tous les +contrôles LNA). Alternative ciblée : **`network.lna.skip-domains`** avec `nextgraph.eu`, +`nextgraph.net` (garde la protection ailleurs). Autres prefs LNA : `network.lna.blocking`, +`network.lna.block_trackers`. + +Ne PAS chasser un bug de rendu Festipod tant qu'il n'y a **aucun log `[FestipodData]`** dans la +console : sans logs app, l'app n'a pas tourné → c'est l'environnement (LNA, cert non approuvé, +serveur dev éteint), pas le code. Le smoke `@e2e` ne peut PAS attraper ça : Playwright n'applique +pas LNA comme un vrai Firefox.