diff --git a/backend/src/index.ts b/backend/src/index.ts index 37e8f001..d6466964 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -169,7 +169,11 @@ app.use( 'img-src': ["'self'", 'data:', 'blob:'], 'font-src': ["'self'", 'data:'], 'connect-src': ["'self'"], - 'frame-ancestors': ["'none'"], + // 'self': eigene App darf eigene Resourcen in iframes embeden (z.B. die + // annotierte PDF-Vorschau in der Auftragsvorlagen-Konfiguration). + // 'none' würde sogar same-origin blocken und damit die UI brechen. + // Externe Sites bleiben weiterhin gesperrt. + 'frame-ancestors': ["'self'"], 'object-src': ["'none'"], 'base-uri': ["'self'"], 'form-action': ["'self'"], diff --git a/docs/todo.md b/docs/todo.md index 13d8f1f1..f23d6149 100644 --- a/docs/todo.md +++ b/docs/todo.md @@ -97,6 +97,14 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung ## ✅ Erledigt +- [x] **🐛 PDF-Vorschau im PDF-Template-Editor lädt nicht** + - CSP-Direktive `frame-ancestors 'none'` blockte ALLE iframe-Embeddings + der eigenen Resourcen, auch same-origin – Browser zeigte je nach + Variante "Verbindung abgelehnt" oder CSP-Violation. + - Fix: `frame-ancestors 'self'` (statt `'none'`). App darf eigene + Resourcen embeden (z.B. die annotierte PDF-Vorschau), externe Sites + bleiben weiterhin gesperrt. + - [x] **🔁 Factory-Defaults Sync-Scripts (dev ↔ prod ↔ Image)** - `./factory-export.sh` zieht eine ZIP per API in `factory-exports/` (gitignored Drop-Box).