fix: CSP-Verletzung durch Inline-Script (SW-Registrierung)

Das Inline-Script in index.html für die Service-Worker-Registrierung
wurde von der Content-Security-Policy blockiert (kein 'unsafe-inline'
in script-src). Ausgelagert nach /sw-register.js ('self' erlaubt).

Außerdem: rel="preload" → rel="modulepreload" für ES-Module (korrekte
Browser-Semantik, behebt die Preload-Warnungen in der Console).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
ulsklyc
2026-03-25 09:36:10 +01:00
parent 9361f4f2a4
commit b08ba42b89
3 changed files with 18 additions and 12 deletions
+4 -12
View File
@@ -17,9 +17,9 @@
<link rel="preconnect" href="https://unpkg.com" crossorigin />
<link rel="dns-prefetch" href="https://openweathermap.org" />
<!-- Preload: kritische Skripte (frühzeitig laden, bevor Parser sie findet) -->
<link rel="preload" href="/api.js" as="script" crossorigin />
<link rel="preload" href="/router.js" as="script" crossorigin />
<!-- Preload: kritische ES-Module (modulepreload ist korrekt für type="module") -->
<link rel="modulepreload" href="/api.js" />
<link rel="modulepreload" href="/router.js" />
<!-- Styles -->
<link rel="stylesheet" href="/styles/tokens.css" />
@@ -53,14 +53,6 @@
<script type="module" src="/router.js"></script>
<!-- Service Worker registrieren -->
<script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('/sw.js').catch((err) => {
console.warn('[SW] Registrierung fehlgeschlagen:', err);
});
});
}
</script>
<script src="/sw-register.js" defer></script>
</body>
</html>
+13
View File
@@ -0,0 +1,13 @@
/**
* Modul: Service Worker Registrierung
* Zweck: Ausgelagert aus index.html um CSP-Inline-Script-Verletzung zu vermeiden
* Abhängigkeiten: keine
*/
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('/sw.js').catch((err) => {
console.warn('[SW] Registrierung fehlgeschlagen:', err);
});
});
}
+1
View File
@@ -23,6 +23,7 @@ const APP_SHELL = [
'/index.html',
'/api.js',
'/router.js',
'/sw-register.js',
'/styles/tokens.css',
'/styles/reset.css',
'/styles/layout.css',