Content Security Policy
Kaleidrs SDK läuft in der Kundenseite. Das bedeutet, dass die Content Security Policy der Kundenseite die Ressourcen erlauben muss, die jedes Produkt lädt. Diese Seite enthält die Konfiguration.
Nach Produkt
Tile und Viewer (iframe-Produkte)
Tile und Viewer laden die eigentliche Karte innerhalb von map-embed.kaleidr.com unter
Kaleidrs CSP. Die Parent-Seite muss nur das iframe selbst und
den SDK-Loader erlauben:
default-src 'self';
script-src 'self' https://cdn.kaleidr.com;
frame-src https://map-embed.kaleidr.com;
connect-src 'self' https://api.kaleidr.com;
Du musst Mapbox-/MapTiler-/OSM-/Vendor-Bild-Hosts in der Parent-Seite nicht erlauben, wenn du nur Tile oder Viewer einbettest — diese befinden sich im Kaleidr-iframe.
Chat und Editor (In-Page-Attach)
Chat und Editor mounten MapLibre im Parent-Dokument. Die CSP der Parent-Seite muss jeden Host erlauben, den MapLibre und das SDK tatsächlich laden:
default-src 'self';
script-src 'self' 'wasm-unsafe-eval' https://cdn.kaleidr.com;
style-src 'self' 'unsafe-inline' https://cdn.kaleidr.com;
connect-src 'self'
https://api.kaleidr.com
https://api.mapbox.com https://events.mapbox.com
https://api.maptiler.com
https://*.tiles.mapbox.com;
img-src 'self' data: blob:
https://api.mapbox.com https://*.tiles.mapbox.com
https://api.maptiler.com
https://*.tile.openstreetmap.org;
worker-src 'self' blob:;
font-src 'self' data:;
'wasm-unsafe-eval' ist erforderlich — MapLibre kompiliert WebAssembly zur Laufzeit
und schlägt ohne diese Direktive fehl. Wenn deine CSP 'wasm-unsafe-eval' verbietet,
kannst du Chat oder Editor derzeit nicht in der Seite mounten.
Was zuerst ausfällt
| Symptom | Wahrscheinlich fehlende Direktive |
|---|---|
| SDK-Loader liefert 404 oder wird blockiert | script-src https://cdn.kaleidr.com |
| MapLibre-Initialisierung schlägt fehl (Chat/Editor) | 'wasm-unsafe-eval' in script-src |
| Tiles erscheinen leer / grau | connect-src und/oder img-src für den Vendor-Host |
| Iframe rendert nie (Tile / Viewer) | frame-src https://map-embed.kaleidr.com |
| Session-Austausch liefert 4xx in der Konsole | Nicht CSP — siehe Auth & scopes Origin-Allowlist |
Nonces und Hashes
'unsafe-inline' ist oben in style-src enthalten, weil MapLibre
inline <style>-Blöcke erzeugt. Wenn deine CSP 'unsafe-inline' derzeit verbietet, verwende einen
Nonce und gib die Styles unter diesem Nonce erneut aus — das SDK erstellt derzeit
keinen Nonce pro Ladevorgang; wenn du einen benötigst, öffne ein Issue gegen
kaleidr-sdk.
Report-Only-Rollout
Die sichere Methode zur Einführung dieser Richtlinie ist:
- Setze den obigen Block eine Woche lang als
Content-Security-Policy-Report-Onlymit einer eigenenreport-uri. - Füge Hosts, die in Verletzungsberichten erscheinen, der richtigen Direktive hinzu.
- Stelle den Header auf
Content-Security-Policyum, sobald die Berichte ruhig bleiben.