La limita cómo un documento o script puede leer recursos de otro origen. es un protocolo mediante headers HTTP que permite al servidor autorizar ciertas lecturas cross-origin desde navegadores.
Sin esta barrera, una página maliciosa podría abrir servicios donde ya tienes sesión y leer información privada directamente.
La política restringe principalmente la lectura y acceso programático. Enviar ciertas solicitudes cross-origin siempre ha sido posible mediante elementos o formularios, por lo que también existen riesgos como CSRF.
Produce una respuesta opaca que JavaScript no puede inspeccionar normalmente. Se utiliza en casos específicos como ciertos recursos para service workers; no desbloquea una API.
Una solicitud servidor-a-servidor no está restringida por la same-origin policy del navegador, aunque sigue necesitando autenticación, autorización y validación.
Por eso “funciona en Postman pero no en el navegador” puede indicar CORS, pero también configuración de cookies, redirects o TLS.
CORS no impide que un navegador envíe todas las solicitudes cross-site posibles. Si la autenticación usa cookies automáticas, protege acciones contra CSRF.
Una página puede cargar imágenes, scripts, estilos o iframes cross-origin bajo reglas específicas. Poder cargar no significa poder leer sus datos internos mediante JavaScript.
CORS protege al usuario del navegador, no al servidor frente a URLs controladas por usuarios.
Si un backend hace fetch a una URL recibida, debe protegerse contra SSRF mediante allowlists, resolución segura, bloqueo de redes internas y controles de redirects.
¿Por qué una API con Access-Control-Allow-Origin: * sigue necesitando autenticación?
Respuesta
Porque el header solo permite que páginas de otros orígenes lean la respuesta. No determina quién puede acceder al recurso ni qué acciones tiene permitidas.