¿Qué es CORS y qué deberías tener en cuenta como desarrollador?
CORS (Cross-Origin Resource Sharing) es un mecanismo de seguridad implementado en los navegadores que controla cómo las páginas web pueden hacer solicitudes a un dominio distinto al de origen. Es fundamental comprenderlo para evitar errores como “No ‘Access-Control-Allow-Origin’ header present” al trabajar con APIs o sistemas distribuidos.
¿Cómo funciona CORS?
Cuando un cliente (normalmente un navegador) intenta acceder a recursos alojados en otro dominio, el servidor de destino debe incluir cabeceras CORS específicas para permitir dicha solicitud. Por ejemplo:
Access-Control-Allow-Origin: https://midominio.com
Si el servidor no responde con esa cabecera, el navegador bloquea el acceso por razones de seguridad.
¿Qué debes tener en cuenta al implementar CORS?
- Controlar los orígenes permitidos: Nunca uses
*en producción. Define explícitamente qué dominios pueden acceder. - Verbos HTTP: Métodos como
GET,POST,PUTyDELETEpueden requerir configuraciones adicionales (preflight request). - Cabeceras personalizadas: Si usas cabeceras como
Authorization, asegúrate de permitirlas conAccess-Control-Allow-Headers. - Credenciales: Para permitir cookies o tokens en las solicitudes, usa:
Access-Control-Allow-Credentials: true - Preflight (OPTIONS): Algunas solicitudes envían una verificación previa (preflight request) con el método
OPTIONS. Asegúrate de que tu backend lo soporte.
Buenas prácticas al manejar CORS
- Configura los headers desde el backend (PHP, Node.js, etc.) de forma dinámica o por lista blanca.
- Evita exponer tu API a todos los orígenes en producción.
- Utiliza herramientas como
Postmanocurlpara probar CORS sin las restricciones del navegador.
Conclusión
Entender qué es CORS y cómo gestionarlo correctamente es esencial para todo desarrollador web. Configurar correctamente las cabeceras de CORS permite que tus aplicaciones se comuniquen de forma segura entre dominios, evitando errores y vulnerabilidades innecesarias.
¿Tienes una API que será consumida por varios dominios? ¡Implementa CORS correctamente desde el inicio!