diff --git a/server/inhaltsrichtlinie.js b/server/inhaltsrichtlinie.js index 6638afdb..69f60230 100644 --- a/server/inhaltsrichtlinie.js +++ b/server/inhaltsrichtlinie.js @@ -117,13 +117,29 @@ export function inhaltsrichtlinie(wurzel) { return function (req, res, next) { const datei = dateiZuPfad(wurzel, req.path === "/" ? "/index.html" : req.path); - /* Für alles, was keine Seite ist (Bilder, CSS, Schriften, API), - genügt eine knappe Regel. Sie kostet nichts und schadet nie. */ - if (!datei) { - res.setHeader("Content-Security-Policy", - "default-src 'none'; frame-ancestors 'self'; base-uri 'none'"); - return next(); - } + /* ⚠️ HIER STAND EINE REGEL FÜR NICHT-SEITEN. SIE HAT DIE APP + LAHMGELEGT (26.08.2026, sofort behoben). + + Der Gedanke war: "default-src 'none' für alles, was keine Seite + ist — kostet nichts und schadet nie." Der zweite Halbsatz war + falsch, und zwar an einer Stelle, die man nicht auf dem Schirm + hat: + + Ein Service Worker übernimmt die Inhaltsrichtlinie, die beim + Herunterladen SEINER EIGENEN Skriptdatei gesetzt war — nicht die + der Seite, für die er arbeitet. Mit 'none' darf er nichts mehr + abrufen. Jede Anfrage scheitert, und weil er für genau diesen + Fall eine Offline-Seite anzeigt, sah es für den Benutzer aus wie + ein Netzausfall. Die Seite war online, der Server lief, alles + meldete Erfolg — und die App zeigte "Keine Verbindung". + + Für Bilder, Stylesheets und Schriften bringt eine Richtlinie + ohnehin nichts: Sie steuert, was ein DOKUMENT laden darf. Ein + Bild lädt nichts nach. Es gab also nie einen Gewinn, dem der + Schaden gegenüberstand. + + Deshalb: Richtlinie NUR für HTML-Dokumente. */ + if (!datei) return next(); const summen = summenFuer(datei);