Fix: /sw.js + /manifest.webmanifest wurden von der Zugangs-Schranke blockiert
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.
This commit is contained in:
@@ -67,12 +67,18 @@ const OEFFENTLICHE_SEITEN = new Set([
|
|||||||
/* Damit diese Seiten nicht nackt/ohne Gestaltung beim Prüfteam ankommen, sind zusätzlich die
|
/* 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
|
rein gestalterischen Dateien freigegeben: Stylesheets sowie Logo/Favicons. Bewusst NUR
|
||||||
.css aus /_astro/ — die JavaScript-Bündel dort enthalten u.a. Produktdaten und bleiben
|
.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) {
|
function istOeffentlichErreichbar(pfad) {
|
||||||
const ohneSlash = pfad.endsWith("/") && pfad.length > 1 ? pfad.slice(0, -1) : pfad;
|
const ohneSlash = pfad.endsWith("/") && pfad.length > 1 ? pfad.slice(0, -1) : pfad;
|
||||||
if (OEFFENTLICHE_SEITEN.has(ohneSlash)) return true;
|
if (OEFFENTLICHE_SEITEN.has(ohneSlash)) return true;
|
||||||
if (pfad.startsWith("/_astro/") && pfad.endsWith(".css")) 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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user