¿Quieres que tu API sea accesible desde diferentes dominios de forma segura? Configurar CORS (Cross-Origin Resource Sharing) es clave para lograrlo.
Esta guía rápida te explica cómo configurar CORS en un HTTP API Gateway de AWS en pocos pasos:
- ¿Qué es CORS?: Es un mecanismo de seguridad que permite que un frontend (por ejemplo,
https://miapp.com
) acceda a una API en otro dominio (https://api.miapp.com
). - HTTP API vs REST API: La configuración de CORS en HTTP API es más sencilla y económica que en REST API.
- Pasos básicos:
- Accede a la consola de API Gateway.
- Selecciona tu HTTP API.
- Configura los parámetros de CORS: orígenes, métodos, cabeceras y más.
- Mejores prácticas:
- Restringe los orígenes permitidos.
- Especifica solo los métodos y cabeceras necesarios.
- Activa credenciales solo si es imprescindible.
Comparativa rápida: HTTP API vs REST API
Característica | HTTP API | REST API |
---|---|---|
Configuración de CORS | Automática y sencilla | Manual y compleja |
Rendimiento | Menor latencia | Más funcionalidades |
Coste | Más económico | Más alto |
¿Problemas con CORS? Revisa los errores más comunes y cómo solucionarlos en las herramientas del navegador.
Con esta guía, podrás configurar CORS de forma segura y eficiente. ¡Sigue leyendo para aprender más!
Configuración de CORS en HTTP API Gateway

Cómo acceder a la configuración de CORS
Para ajustar CORS en una HTTP API de API Gateway, primero debes ingresar a la consola de AWS y localizar tu API. Una vez dentro, sigue estos pasos para encontrar la sección de configuración:
- Ve a la consola de API Gateway.
- Selecciona tu HTTP API en la lista.
- En el menú de navegación izquierdo, haz clic en CORS.
- En la sección principal, selecciona Configurar.
A continuación, revisa las opciones disponibles para personalizar la configuración.
Parámetros de configuración de CORS
En HTTP API Gateway, puedes personalizar varios parámetros de CORS según tus necesidades. Aquí tienes una tabla con ejemplos comunes:
Parámetro | Descripción | Ejemplo |
---|---|---|
Access-Control-Allow-Origins | Especifica los orígenes permitidos | https://miapp.es |
Access-Control-Allow-Methods | Métodos HTTP autorizados | GET, POST, PUT, DELETE, OPTIONS |
Access-Control-Allow-Headers | Cabeceras permitidas en las solicitudes | Authorization, Content-Type, X-Amz-Date, X-Api-Key, X-Amz-Security-Token |
Access-Control-Expose-Headers | Cabeceras visibles para el cliente | x-amz-date, x-api-id |
Access-Control-Max-Age | Tiempo en segundos para cachear preflight | 300 segundos |
Ahora veamos cómo aplicar esta configuración en un caso práctico.
Ejemplo básico de configuración de CORS
Con los pasos anteriores, puedes implementar una configuración básica ajustando los siguientes parámetros:
-
Orígenes permitidos
Agrega el dominio de tu aplicación:https://miapp.es
-
Métodos HTTP autorizados
Incluye métodos como:GET, POST, PUT, DELETE, OPTIONS
-
Cabeceras permitidas
Especifica cabeceras como:Authorization, Content-Type, X-Amz-Date, X-Api-Key, X-Amz-Security-Token
Antes de llevar esta configuración a producción, realiza una prueba en tu navegador. Asegúrate de que la respuesta incluya las cabeceras CORS esperadas. Esto garantizará que las solicitudes desde tu dominio funcionen correctamente.
Configuración personalizada de CORS
Tras haber configurado CORS de manera básica, es momento de ajustar las opciones para que se adapten mejor a las necesidades específicas de tu entorno.
Restricción de orígenes permitidos
Definir con precisión los orígenes autorizados es clave. En lugar de usar el comodín *
, que permite acceso desde cualquier origen, es mejor especificar los dominios permitidos.
Por ejemplo, puedes configurar los orígenes así:
Entorno | Origen permitido |
---|---|
Desarrollo | https://dev.miapp.es |
Pruebas | https://staging.miapp.es |
Producción | https://miapp.es |
Incluye siempre el protocolo y, si es necesario, el subdominio. Una vez definidos los orígenes, ajusta los métodos y las cabeceras permitidas para aumentar la seguridad.
Definición de métodos y cabeceras
Además de limitar los orígenes, es importante especificar los métodos y cabeceras que estará permitido usar. Solo habilita lo necesario para tu aplicación.
Si tu API realiza operaciones CRUD básicas, una configuración típica sería:
{
"Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
"Access-Control-Allow-Headers": "Authorization, Content-Type, X-Amz-Date"
}
Manejo de credenciales
El manejo de credenciales en solicitudes cross-origin es esencial si necesitas trabajar con cookies o encabezados de autorización. Para habilitarlo, sigue estos pasos:
-
Configura en el API Gateway lo siguiente:
{ "Access-Control-Allow-Credentials": "true" }
-
En el cliente, agrega
credentials: 'include'
en tus solicitudes fetch:fetch('https://api.miapp.es/recurso', { credentials: 'include' });
Importante: Cuando habilites credenciales, asegúrate de especificar cada origen permitido de forma explícita.
Permitir el uso de credenciales hace que la seguridad de tu API sea más exigente. Por eso, es recomendable implementar medidas adicionales, como el uso de tokens CSRF y una validación estricta de sesiones, especialmente si estás trabajando con cookies o credenciales de autenticación.
sbb-itb-03dc61e
Testing CORS Settings
Métodos de prueba CORS
Puedes comprobar tu configuración CORS utilizando las herramientas de desarrollo del navegador o realizando solicitudes de prueba.
Aquí tienes un ejemplo para probar desde el frontend:
async function probarCORS() {
try {
const respuesta = await fetch('https://tu-api.execute-api.eu-west-1.amazonaws.com/test', {
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
});
console.log('Código de respuesta:', respuesta.status);
} catch (error) {
console.error('Error CORS:', error);
}
}
Si la solicitud no funciona, consulta la siguiente sección para identificar y corregir errores.
Solución de errores CORS
Aquí tienes una tabla con los problemas más comunes y cómo resolverlos:
Error | Causa | Solución |
---|---|---|
Origin not allowed | El origen no está en la lista permitida | Añade el origen en Access-Control-Allow-Origin |
Method not allowed | Método HTTP no configurado | Incluye el método en Access-Control-Allow-Methods |
Headers not allowed | Cabeceras no autorizadas | Agrega las cabeceras en Access-Control-Allow-Headers |
Para diagnosticar, revisa la respuesta OPTIONS de tu API:
- Abre las herramientas de desarrollo del navegador.
- Ve a la pestaña Network o Red.
- Busca la solicitud preliminar OPTIONS.
- Comprueba las cabeceras CORS en la respuesta.
Las herramientas del navegador pueden ser de gran ayuda para entender mejor los problemas.
Herramientas del navegador para CORS
Chrome DevTools incluye funciones útiles para depurar problemas relacionados con CORS:
-
Panel de Console y Network
Muestra mensajes detallados sobre errores CORS. También permite revisar las solicitudes OPTIONS y las cabeceras como:Access-Control-Allow-Origin
Access-Control-Allow-Methods
Access-Control-Allow-Headers
-
Panel de Application
Ideal para analizar cookies y credenciales cuando trabajas conAccess-Control-Allow-Credentials
.
Si usas Firefox Developer Edition, también encontrarás herramientas para simular diferentes orígenes y analizar el comportamiento de tu API.
Consejos de seguridad y rendimiento
Con la configuración básica y personalizada de CORS ya en marcha, aquí tienes algunos consejos para reforzar la seguridad y mejorar el rendimiento de tu API.
Directrices para una configuración CORS segura
Una configuración adecuada de CORS ayuda a proteger tu API HTTP. Ten en cuenta estos puntos clave:
- Define orígenes específicos: Evita el uso de comodines innecesarios para limitar la exposición.
- Usa HTTPS siempre: Garantiza que el tráfico esté cifrado para prevenir ataques como el man-in-the-middle.
- Aplica el principio de permisos mínimos: Permite solo los métodos y cabeceras estrictamente necesarios.
Aspecto | Configuración segura | Configuración no recomendada |
---|---|---|
Orígenes | https://miapp.es | * |
Métodos | GET, POST específicos | Todos los métodos |
Credenciales | false por defecto | true sin restricciones |
Estos pasos complementan los ejemplos básicos de configuración que ya hemos visto.
Cómo CORS afecta el rendimiento
La implementación de CORS puede influir en el rendimiento de tu API. Algunos factores a considerar:
- Solicitudes OPTIONS: Configura
Access-Control-Max-Age
para almacenar en caché las respuestas OPTIONS y reducir la latencia. - Validación de orígenes: Validar múltiples orígenes puede aumentar el tiempo de respuesta.
- Cabeceras adicionales: Cada cabecera extra incrementa el tamaño de la respuesta, afectando el rendimiento.
Para mejorar el rendimiento, puedes usar una configuración como esta:
{
"cors": {
"allowOrigins": ["https://miapp.es"],
"allowMethods": ["GET", "POST"],
"maxAge": 300,
"allowCredentials": false
}
}
¿Cuándo usar comodines?
El uso de comodines (*), aunque tentador, debe limitarse a APIs públicas o entornos de desarrollo. En producción, es mejor mantener una lista específica de orígenes permitidos:
{
"allowOrigins": [
"https://app.miempresa.es",
"https://admin.miempresa.es",
"https://dev.miempresa.es"
]
}
Busca un equilibrio entre flexibilidad en el desarrollo y seguridad en producción. Prueba siempre estos ajustes en el navegador para asegurarte de que funcionan como esperas, tal y como se explicó en la sección de testing.
Próximos pasos
Después de configurar y probar CORS, es importante planificar las siguientes acciones para mantener un buen rendimiento y garantizar la seguridad a largo plazo.
Revisión de puntos clave
Para implementar CORS de manera efectiva, ten en cuenta lo siguiente:
- Configuración inicial y avanzada: Comienza con una configuración básica para pruebas y utiliza configuraciones más específicas en producción, limitando los orígenes permitidos.
- Seguridad y optimización: Asegúrate de usar HTTPS, valida todas las entradas y aplica métodos sólidos de autenticación y autorización. Además, mejora el rendimiento con técnicas como caché y compresión.
Aspecto | Herramienta recomendada | Función principal |
---|---|---|
Monitorización | CloudWatch | Seguimiento de métricas y registros |
Trazabilidad | X-Ray | Análisis de latencia y detección de errores |
Auditoría | CloudTrail | Registro de actividades en la API |
Con estos puntos claros, puedes consultar más recursos para ampliar tus conocimientos sobre la configuración de CORS.
Recursos adicionales
Si quieres aprender más sobre la configuración de CORS y cómo mejorar la seguridad en AWS, aquí tienes algunos recursos en español:
- Dónde Aprendo AWS (https://dondeaprendoaws.com): Un portal especializado con artículos y tutoriales en español sobre AWS, incluyendo guías detalladas sobre cómo proteger tu infraestructura en la nube.
- Estrategia de seguridad: El artículo "Estrategia de seguridad en la nube de AWS, ¿Por dónde empezar?" ofrece una excelente introducción para implementar medidas de seguridad eficaces.
No olvides revisar periódicamente tu configuración y actualizar las medidas de seguridad utilizando herramientas como CloudWatch, X-Ray y CloudTrail.