CORS y origins permitidos
Las claves Publishable (kld_pk_live_…) contienen una lista de allowed-origins — los
browser origins autorizados a utilizar la clave. Configúrala al crear la clave (p. ej.
https://acme.com, https://app.acme.com); una live publishable key requiere al
menos uno. Las claves Server (kld_sk_live_…) no reciben permiso CORS, por lo que una página
nunca puede leer una respuesta generada con ellas. Ten en cuenta qué cubre y qué no:
CORS bloquea la respuesta, no la solicitud — una server key incrustada en el código
fuente ya ha quedado expuesta. Por eso el SDK rechaza
kld_sk_… al montar; las server keys son exclusivamente server-to-server.
Cómo se aplica
- Preflight (
OPTIONS) es permisivo — refleja el origin solicitado para que el navegador continúe (la clave no se presenta en un preflight). - La solicitud real solo recibe un header
Access-Control-Allow-Origincuando elOriginde la solicitud está en la lista permitida de la clave. Un origin no incluido en la allowlist no recibe header ACAO, por lo que el navegador bloquea la respuesta.
No intervienen cookies — la platform API usa autenticación por bearer token, por lo que no existe
Access-Control-Allow-Credentials.
Las publishable keys viajan en URLs al tile CDN
tile.kaleidr.com recibe tu publishable key como parámetro de consulta ?key=. Esto
es intencionado y tiene una consecuencia importante: los query strings quedan
registrados en los access logs del CDN, el historial del navegador y cualquier proxy intermedio.
Esto es aceptable porque una publishable key es pública por diseño — ya
se distribuye en el código fuente de tu página. El control que la hace segura es la
origin allowlist por clave, aplicada por el edge en cada tile request, además de
la restricción de la clave al scope maps.
No es aceptable para una server key. Nunca pongas kld_sk_… en una URL y recuerda
que una server key filtrada ya está expuesta cuando la API la rechaza.
En cualquier otro lugar — el session exchange del SDK y la platform API — la clave viaja como header, nunca como query parameter.
Consejos
- Usa bare origins (
scheme://host[:port]) — sin path ni barra final — para que coincidan exactamente con el headerOrigindel navegador. - Se requiere
httpsexcepto paralocalhost/127.0.0.1(pruebas locales). - Las llamadas server-to-server con una clave server (sin
Origindel navegador) no están sujetas a CORS, aunque siguen autenticándose y comprobando scopes normalmente. - Las server keys también admiten una IP allowlist opcional — una llamada
desde una IP fuera de la lista se rechaza con 403
ip_not_allowedincluso si el bearer es válido. Adminístrala en kaleidr.com/api-keys.