Curious TechieDev Toolbox
Todas las Guías/Estándares Web9 min read

¿Qué es CORS y la Política del Mismo Origen (SOP)?

Aprende sobre Cross-Origin Resource Sharing: peticiones preflight OPTIONS, encabezados de acceso y errores frecuentes.

Puntos Clave
  • La Política del Mismo Origen (SOP) impide que un script lea respuestas de orígenes distintos (protocolo, dominio o puerto).
  • CORS flexibiliza la SOP permitiendo que el servidor indique qué orígenes externos tienen autorización.
  • Las solicitudes preflight OPTIONS validan métodos y encabezados antes de procesar llamadas complejas.
  • El comodín Access-Control-Allow-Origin: * queda bloqueado si se envían credenciales o cookies.
  • CORS es una protección ejecutada por el navegador web, no por herramientas backend como cURL o Postman.

1. ¿Qué es la Política del Mismo Origen (SOP)?

La Same-Origin Policy (SOP) es una frontera de seguridad en navegadores que aísla scripts no confiables. Mediante SOP, el código JS de https://banco.com no puede consultar cookies ni datos de https://malicioso.com.

Dos URLs pertenecen al mismo origen únicamente si coinciden su Protocolo, Host (Dominio) y Puerto:

https://api.example.com:443 vs https://example.com:443ORIGEN CRUZADO (Subdominio diferente)
http://example.com:80 vs https://example.com:443ORIGEN CRUZADO (Protocolo diferente: HTTP vs HTTPS)
https://example.com/app vs https://example.com/apiMISMO ORIGEN (Variaciones en la ruta están permitidas)

2. Cómo CORS Habilita el Acceso Seguro entre Orígenes

CORS (Cross-Origin Resource Sharing) permite a los servidores backend declarar explícitamente qué orígenes externos tienen autorización para leer sus respuestas mediante cabeceras HTTP:

  • Access-Control-Allow-Origin: Orígenes externos admitidos (ej. https://app.curious-techie.com).
  • Access-Control-Allow-Methods: Métodos HTTP válidos (ej. GET, POST, PUT, DELETE).
  • Access-Control-Allow-Headers: Cabeceras admitidas (ej. Content-Type, Authorization).
  • Access-Control-Max-Age: Duración de la caché del preflight OPTIONS en segundos.

3. Peticiones Preflight OPTIONS y Caché

Para peticiones no simples (envío de JSON con application/json o cabeceras Authorization: Bearer), el navegador envía previamente un preflight HTTP OPTIONS para comprobar los permisos del servidor.

4. El Error Crítico de Credenciales y Comodines (*)

Un error muy extendido al gestionar sesiones entre orígenes:

Combinación Inválida por Estándar: Access-Control-Allow-Origin: * + Access-Control-Allow-Credentials: true

Los navegadores bloquean la respuesta si se combina el comodín * con credenciales activadas. El servidor debe responder con el origen solicitante exacto y validado.