CORS explicado sin dolor de cabeza
Por qué el navegador bloquea algunas peticiones, qué hacen las cabeceras Access-Control y cómo resolver errores de CORS en desarrollo.
CORS (Cross-Origin Resource Sharing) es un mecanismo de seguridad del navegador. Impide que JavaScript en https://app.ejemplo.com llame a https://api.otro-dominio.com salvo que el servidor de la API lo autorice explícitamente.
Cabeceras que debes conocer
- Access-Control-Allow-Origin — qué orígenes pueden acceder.
- Access-Control-Allow-Methods — GET, POST, etc. permitidos.
- Access-Control-Allow-Headers — cabeceras custom permitidas (Authorization, Content-Type).
- Access-Control-Allow-Credentials — si se envían cookies o tokens en credenciales.
Las peticiones "preflight" (OPTIONS) aparecen cuando el navegador necesita permiso antes del POST real con JSON. Configura el backend para responder OPTIONS correctamente; no desactives CORS en producción con wildcards inseguros.