Content Security Policy
Le SDK de Kaleidr s’exécute dans la page du client. Cela signifie que la Content Security Policy de la page cliente doit autoriser les ressources chargées par chaque produit. Cette page fournit la configuration.
Produit par produit
Tile et Viewer (produits iframe)
Tile et Viewer chargent la carte réelle dans map-embed.kaleidr.com, sous la
CSP de Kaleidr. La page parente doit uniquement autoriser l’iframe lui-même et
le loader du SDK :
default-src 'self';
script-src 'self' https://cdn.kaleidr.com;
frame-src https://map-embed.kaleidr.com;
connect-src 'self' https://api.kaleidr.com;
Vous n’avez pas besoin d’autoriser les hôtes d’images Mapbox / MapTiler / OSM / vendor dans la page parente lorsque vous intégrez uniquement Tile ou Viewer — ils se trouvent dans l’iframe Kaleidr.
Chat et Editor (attach dans la page)
Chat et Editor montent MapLibre dans le document parent. La CSP de la page parente doit autoriser tous les hôtes réellement chargés par MapLibre et le SDK :
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' est requis — MapLibre compile WebAssembly à l’exécution
et échoue sans cela. Si votre CSP interdit 'wasm-unsafe-eval', vous ne pouvez pas
actuellement monter Chat ou Editor dans la page.
Ce qui casse en premier
| Symptôme | Directive probablement manquante |
|---|---|
| Le loader du SDK renvoie 404 ou est bloqué | script-src https://cdn.kaleidr.com |
| L’initialisation de MapLibre échoue (Chat/Editor) | 'wasm-unsafe-eval' dans script-src |
| Les tuiles apparaissent vides / grises | connect-src et/ou img-src pour l’hôte vendor |
| L’iframe ne s’affiche jamais (Tile / Viewer) | frame-src https://map-embed.kaleidr.com |
| Le session exchange renvoie 4xx dans la console | Ce n’est pas la CSP — consultez l’origin allowlist dans Auth & scopes |
Nonces et hashes
'unsafe-inline' est inclus dans style-src ci-dessus car MapLibre génère
des blocs <style> inline. Si votre CSP interdit actuellement 'unsafe-inline', utilisez un
nonce et réémettez les styles sous ce nonce — le SDK n’émet actuellement
aucun nonce par chargement ; si vous en avez besoin, ouvrez une issue dans
kaleidr-sdk.
Déploiement report-only
La manière sûre d’adopter cette politique est :
- Définissez le bloc ci-dessus en
Content-Security-Policy-Report-Onlyavec unereport-urique vous contrôlez pendant une semaine. - Ajoutez les hôtes apparaissant dans les rapports de violation à la bonne directive.
- Passez le header à
Content-Security-Policylorsque les rapports deviennent silencieux.