Saltar al contenido principal

Content Security Policy

El SDK de Kaleidr se ejecuta en la página del cliente. Eso significa que la Content Security Policy de la página del cliente debe permitir los recursos que carga cada producto. Esta página contiene la configuración.

Por producto

Tile y Viewer (productos iframe)

Tile y Viewer cargan el mapa real dentro de map-embed.kaleidr.com, bajo la CSP de Kaleidr. La página principal solo tiene que permitir el propio iframe y el loader del 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;

No necesitas permitir hosts de imágenes de Mapbox / MapTiler / OSM / vendor en la página principal cuando solo integras Tile o Viewer — estos viven dentro del iframe de Kaleidr.

Chat y Editor (attach dentro de la página)

Chat y Editor montan MapLibre en el documento principal. La CSP de la página principal debe permitir todos los hosts que MapLibre y el SDK realmente carguen:

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' es obligatorio — MapLibre compila WebAssembly en tiempo de ejecución y falla sin él. Si tu CSP prohíbe 'wasm-unsafe-eval', actualmente no puedes montar Chat o Editor dentro de la página.

Qué falla primero

SíntomaDirectiva probablemente ausente
El loader del SDK devuelve 404 o está bloqueadoscript-src https://cdn.kaleidr.com
Falla la inicialización de MapLibre (Chat/Editor)'wasm-unsafe-eval' en script-src
Los tiles aparecen vacíos / grisesconnect-src y/o img-src para el host del vendor
El iframe nunca se renderiza (Tile / Viewer)frame-src https://map-embed.kaleidr.com
Session exchange devuelve 4xx en la consolaNo es CSP — consulta la origin allowlist en Auth & scopes

Nonces y hashes

'unsafe-inline' está incluido en style-src porque MapLibre genera bloques <style> inline. Si tu CSP prohíbe actualmente 'unsafe-inline', utiliza un nonce y vuelve a emitir los estilos bajo ese nonce — el SDK no genera actualmente un nonce por carga; si necesitas uno, abre un issue en kaleidr-sdk.

Despliegue report-only

La forma segura de adoptar esta política es:

  1. Configura el bloque anterior como Content-Security-Policy-Report-Only con una report-uri de tu propiedad durante una semana.
  2. Añade los hosts que aparezcan en los informes de infracciones a la directiva correcta.
  3. Cambia el header a Content-Security-Policy cuando los informes estén limpios.