Saltar al contenido
Explorar conocimiento

concepto · intermedio · 1 min de lectura

CORS — Cross-Origin Resource Sharing

CORS es un mecanismo de seguridad del navegador que permite que un servidor controle qué dominios externos pueden acceder a sus recursos, relajando la política same-origin de forma controlada.

No requiere conocimientos previos.

Alcance en breve

Cubre

  • CORS as a concept

No cubre

  • implementation details

Supone

  • The reader understands relevant fundamentals.

Resumen

Por defecto, el navegador aplica la política same-origin: un script de sitio.com no puede leer datos de api.otro.com. CORS permite que api.otro.com declare explícitamente «confío en sitio.com, puede leer mis datos» mediante headers HTTP como Access-Control-Allow-Origin.

El navegador envía un preflight request —OPTIONS— antes de requests complejos para verificar que el servidor acepta el origen solicitado. El servidor responde con los headers CORS y el navegador decide si bloquea o permite.

Alcance y supuestos

Cubre CORS como mecanismo de seguridad del navegador y sus headers. Asume familiaridad con HTTP.

Modelo mental

Un portero que solo deja entrar a personas con invitación. Si alguien de otro edificio quiere entrar, el portero llama al residente y le pregunta «¿dejo pasar a esta persona?». El residente responde sí o no. CORS es el protocolo de esa llamada.

Uso práctico

  • ✅ Configurar CORS explícitamente, nunca usar Access-Control-Allow-Origin: * con credenciales.
  • ❌ CORS no es un mecanismo de seguridad contra ataques directos al servidor —solo aplica en navegadores—.

Ejemplo trabajado: CORS en una API

La API en api.ejemplo.com configura Access-Control-Allow-Origin: https://app.ejemplo.com. Un script malicioso en hacker.com intenta leer datos de la API. El navegador bloquea la respuesta porque el header CORS no incluye hacker.com. La misma API responde correctamente cuando la llama app.ejemplo.com.

Evidencia

  • MDN Web Docs tiene la referencia definitiva de CORS. La política same-origin es fundamental para la seguridad web.

Fuentes citadas