Las claves verificadas

  • CORS usa encabezados HTTP para que un servidor indique qué orígenes pueden leer recursos desde el navegador. Ver evidencia
  • El navegador restringe solicitudes entre orígenes iniciadas por scripts salvo que la respuesta autorice el acceso. Ver evidencia
  • El preflight usa OPTIONS para consultar métodos y encabezados permitidos antes de ciertas solicitudes. Ver evidencia
  • Las reglas de CORS forman parte del estándar Fetch que usan los navegadores para solicitudes de red. Ver evidencia

Qué es CORS y quién toma la decisión

CORS, por Cross-Origin Resource Sharing, es un mecanismo basado en encabezados HTTP. Permite que un servidor indique qué origen distinto puede leer una respuesta desde un navegador. Un origen combina esquema, dominio y puerto: cambiar cualquiera de esos elementos puede convertir una solicitud en una petición entre orígenes.

El navegador aplica CORS a solicitudes iniciadas por JavaScript, como fetch o XMLHttpRequest. La API puede recibir y responder la solicitud, pero si no incluye el permiso adecuado, el navegador no entrega esa respuesta al código de la página. Por eso cambiar solo el frontend no resuelve un error de CORS.

Cuándo aparece la solicitud OPTIONS

Para ciertas solicitudes, el navegador envía antes una petición OPTIONS llamada preflight. Allí anuncia el método y los encabezados que planea usar. El servidor responde si autoriza ese origen, método y encabezados; recién entonces el navegador puede enviar la solicitud principal.

No todas las peticiones entre orígenes hacen preflight. Una solicitud con condiciones más simples puede ir directamente, aunque el servidor aún debe autorizar que el script lea su respuesta mediante Access-Control-Allow-Origin. Los detalles dependen del método, Content-Type y encabezados usados.

Secuencia de preflight OPTIONS, permiso y solicitud principal
Ilustración editorial: el navegador pide permiso antes de algunas solicitudes entre orígenes. · VisteEsto · Fuente · VisteEsto editorial

Guía para diagnosticar un error de CORS

Primero comprobá en la consola del navegador el origen de la página y la URL de la API. Después revisá la respuesta de la API o del preflight: Access-Control-Allow-Origin debe coincidir con el origen permitido. Si hay métodos o encabezados no simples, verificá también Access-Control-Allow-Methods y Access-Control-Allow-Headers.

No uses un comodín para resolver a ciegas un caso con credenciales. Las solicitudes que incluyen cookies o autenticación requieren reglas más precisas: el servidor debe especificar el origen y permitir credenciales de forma explícita. CORS controla qué puede leer el navegador, pero no reemplaza autenticación, autorización ni validación en el servidor.

Origen, navegador y servidor en un diagrama de autorización CORS
Ilustración editorial: el navegador aplica el permiso que declara el servidor. · VisteEsto · Fuente · VisteEsto editorial
Qué aporta VisteEsto: Nuestro trabajo en esta nota

VisteEsto separa la decisión del navegador, la autorización del servidor y una ruta concreta para leer un error de CORS.

Fuentes, actualizaciones y metodología 3 fuentes

Fuentes consultadas

Historial de actualización

  • Publicación inicial basada en MDN, Fetch Standard y web.dev.

Cómo elaboramos esta nota

Definimos la consulta principal “qué es CORS y por qué el navegador bloquea una API”, contrastamos los datos con 3 fuentes —2 primarias— y revisamos contexto, imágenes y posibles vacíos antes de publicar. Conocé nuestra política editorial y de verificación.

Siguiente historiaQué es un webhook y en qué se diferencia de una API