¿Qué es CORS y por qué el navegador bloquea una petición a tu API?
Publicado el 2026-10-20 por frfrand
Qué es CORS, cómo funciona el preflight OPTIONS, diferencia con autenticación y cómo configurarlo sin permitir cualquier origen.

CORS es un mecanismo del navegador que controla cuándo el código de una página puede leer respuestas procedentes de otro origen. Sus siglas significan Cross-Origin Resource Sharing. Si un frontend en app.ejemplo.com intenta consultar una API en api.ejemplo.com, CORS puede entrar en juego porque los orígenes son distintos.
No es un fallo de Internet ni un sistema de autenticación. Es una política relacionada con el navegador y la seguridad entre sitios.
¿Qué significa origen?
En una página web, el origen está definido por esquema, nombre de host y puerto. https://ejemplo.com y http://ejemplo.com no tienen el mismo origen. Tampoco https://ejemplo.com y https://api.ejemplo.com.
Esta distinción existe para que una página cualquiera no pueda leer libremente datos de otros sitios donde una persona tenga sesiones abiertas.
Un ejemplo cotidiano
Imaginá que estás dentro de tu banco en una pestaña y abrís una web desconocida en otra. Sería peligroso que esa segunda web pudiera consultar automáticamente los detalles de tu cuenta y leer la respuesta únicamente porque tu navegador tiene una sesión del banco.
El navegador aplica la política de mismo origen y permite ciertas excepciones controladas mediante CORS. El servidor decide qué orígenes autoriza a leer determinadas respuestas.
¿Qué hace el servidor?
Una respuesta puede incluir Access-Control-Allow-Origin para indicar qué origen está permitido. Por ejemplo, una API destinada a un único frontend podría autorizar expresamente https://app.ejemplo.com.
No siempre corresponde utilizar *. Si la API envía datos privados o depende de credenciales, la configuración debe ser mucho más específica. Además, existen reglas especiales para peticiones con credenciales.
CORS no sustituye los controles de acceso del backend. Un cliente que no sea un navegador puede llamar directamente a una API aunque no envíe la cabecera Origin.
¿Qué es un preflight OPTIONS?
En ciertas peticiones, el navegador consulta primero si la operación está permitida, normalmente mediante una solicitud HTTP OPTIONS. Esa verificación previa se llama preflight.
Puede ocurrir, por ejemplo, cuando el frontend necesita enviar determinados encabezados personalizados o métodos. El servidor debe responder con información compatible sobre métodos y cabeceras permitidos.
Un error común es configurar correctamente una ruta POST, pero olvidarse de que el servidor o proxy debe atender el preflight. Desde el navegador parece que la API está caída, aunque responda perfectamente desde otra herramienta.
¿Cómo investigar un error de CORS?
Primero abrí las herramientas de desarrollo del navegador y mirá la solicitud que falló, su origen, sus cabeceras y la respuesta. Comprobá si hubo una llamada OPTIONS previa.
Después verificá la configuración del backend y de cualquier proxy intermedio. No empieces agregando cabeceras por duplicado en Nginx y en la aplicación sin saber cuál de las dos capas va a gestionarlas.
Otro error es instalar una extensión que desactiva temporalmente restricciones del navegador y asumir que ya arreglaste la aplicación. Eso solo oculta el síntoma en tu máquina.
CORS no protege tu API del uso abusivo
Aunque una web no autorizada no pueda leer determinadas respuestas mediante JavaScript del navegador, tu API sigue necesitando autenticación, autorización, validación, límites de tráfico y protección apropiada contra ataques web.
CORS no impide por sí mismo que alguien llame a un endpoint público desde un script de servidor.
¿Qué ocurre con ArduMaker?
Si desplegás un frontend y un backend bajo dominios distintos en ArduMaker, necesitás definir qué orígenes pueden consumir tu API desde un navegador. Configurarlo correctamente en la aplicación suele ser más seguro que permitir indiscriminadamente cualquier origen.
En una frase: CORS controla ciertas lecturas entre orígenes realizadas por navegadores. El error no se soluciona «apagando seguridad», sino autorizando los orígenes necesarios y verificando cómo responde el servidor.
Fuentes: CORS en MDN · Política de mismo origen.
