Skip to content

Commit e70be80

Browse files
Guigui64260claude
andcommitted
fix(sw): servir les service workers sans session
`/sw-notifications.js` répondait 307 vers /login : le matcher du middleware exclut `_next/static`, `favicon.ico` et les extensions d'image, mais pas les `.js` de `/public`. Un service worker est récupéré par le navigateur HORS de tout contexte authentifié — un 307 le rend simplement impossible à enregistrer, donc aucune notification push ne pouvait fonctionner. Constaté en vérifiant la bascule, pas en test : `curl` sur la route servie. Le même contrôle a révélé que `/sw-elevage.js` est dans ce cas DEPUIS SA CRÉATION — le service worker de la tournée d'élevage n'a jamais pu s'enregistrer en production, et son `register()` échouait en silence. Les deux sont corrigés par la même exclusion `sw-[^/]*\.js`. À retenir : `/manifest.json` et `/icon-192.png` répondaient 200 pour deux raisons différentes — le premier est servi par Caddy avant Next, le second bénéficie de l'exclusion des extensions d'image. Ni l'un ni l'autre ne prouvait que `/public` était joignable. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 parent 3ed97b4 commit e70be80

1 file changed

Lines changed: 9 additions & 2 deletions

File tree

src/middleware.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,14 @@ export const config = {
133133
matcher: [
134134
// Les anciens justificatifs image seraient sinon exclus par l'extension.
135135
"/uploads/:path*",
136-
// Matcher tout sauf les fichiers statiques
137-
"/((?!_next/static|_next/image|favicon.ico|.*\\.(?:svg|png|jpg|jpeg|gif|webp)$).*)",
136+
// Matcher tout sauf les fichiers statiques.
137+
// Les service workers (`/sw-*.js`) sont exclus explicitement : ils vivent
138+
// dans /public, donc le matcher les attrapait faute d'extension image, et
139+
// le middleware répondait 307 vers /login. Un service worker doit être
140+
// servi SANS session — le navigateur le récupère hors de tout contexte
141+
// authentifié. Constaté le 2026-08-19 à la mise en service du push : la
142+
// route répondait 307, et `/sw-elevage.js` était dans le même cas depuis
143+
// sa création, donc jamais enregistré en production.
144+
"/((?!_next/static|_next/image|favicon.ico|sw-[^/]*\\.js|.*\\.(?:svg|png|jpg|jpeg|gif|webp)$).*)",
138145
],
139146
}

0 commit comments

Comments
 (0)