From ea9a2954d0b2d159c026f3f698e3e150af46074f Mon Sep 17 00:00:00 2001 From: qcigano Date: Tue, 4 Aug 2026 15:30:10 +0200 Subject: [PATCH] Fix: /sw.js + /manifest.webmanifest wurden von der Zugangs-Schranke blockiert MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Live per Browsertest gefunden: Auf /admin/ (das die Haupt-Schranke bewusst umgeht) versucht ein eigenes Skript, den Service Worker unter /sw.js zu registrieren (für die "Installieren"-Funktion) — das schlug mit einem echten Browserfehler fehl ("script resource is behind a redirect"), weil /sw.js und /manifest.webmanifest bisher nicht auf der Liste öffentlich erreichbarer Dateien standen und deshalb selbst einen 302 auf die Zugangscode-Seite bekamen. Betrifft jeden Aufruf von /admin/ ohne aktive Haupt-Gate-Sitzung (z.B. direkt per Lesezeichen). Beide Dateien enthalten keinerlei Shop-/Kundendaten (reines Caching-Skript bzw. App-Metadaten), Freigabe also unbedenklich — vor der Änderung geprüft, dass wirklich nichts Sensibles drin steht. --- functions/_middleware.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/functions/_middleware.js b/functions/_middleware.js index 849c0f5..1d5918e 100644 --- a/functions/_middleware.js +++ b/functions/_middleware.js @@ -67,12 +67,18 @@ const OEFFENTLICHE_SEITEN = new Set([ /* Damit diese Seiten nicht nackt/ohne Gestaltung beim Prüfteam ankommen, sind zusätzlich die rein gestalterischen Dateien freigegeben: Stylesheets sowie Logo/Favicons. Bewusst NUR .css aus /_astro/ — die JavaScript-Bündel dort enthalten u.a. Produktdaten und bleiben - deshalb weiterhin hinter der Schranke. */ + deshalb weiterhin hinter der Schranke. + /sw.js + /manifest.webmanifest (04.08.2026 ergänzt): enthalten keinerlei Shop-/Kundendaten + (Service Worker ist reines Caching-Skript, Manifest nur Name/Icons/Farben), wurden bisher aber + von der Schranke blockiert (302 statt der Datei) — dadurch schlug u.a. die Service-Worker- + Registrierung auf /admin/ mit einem echten Browserfehler fehl, sobald jemand /admin/ ohne + gültige Haupt-Gate-Sitzung aufruft (z.B. direkt per Lesezeichen, ohne vorher die Haupt-Seite + besucht/eingeloggt zu haben). */ function istOeffentlichErreichbar(pfad) { const ohneSlash = pfad.endsWith("/") && pfad.length > 1 ? pfad.slice(0, -1) : pfad; if (OEFFENTLICHE_SEITEN.has(ohneSlash)) return true; if (pfad.startsWith("/_astro/") && pfad.endsWith(".css")) return true; - if (/^\/(logo\.png|favicon\.ico|favicon-\d+x\d+\.png|apple-touch-icon\.png|icon-\d+(-maskable)?\.png)$/.test(pfad)) return true; + if (/^\/(logo\.png|favicon\.ico|favicon-\d+x\d+\.png|apple-touch-icon\.png|icon-\d+(-maskable)?\.png|sw\.js|manifest\.webmanifest)$/.test(pfad)) return true; return false; }