Todo desarrollador web se ha topado con este clásico error rojo en la consola del navegador:
Access to fetch at 'https://api.ejemplo.com/v1/transfer' from origin 'http://localhost:3000' has been blocked by CORS policy¿Por qué la misma petición funciona en Postman o cURL pero falla en el navegador? Porque CORS (Cross-Origin Resource Sharing) no es un cortafuegos del servidor, sino una medida de seguridad del navegador que protege al usuario.
1. ¿Por qué existe la Same-Origin Policy (SOP)?
Sin la Same-Origin Policy, si tuvieras abierta la sesión de tu banco (https://banco.com) en una pestaña y abrieras una web maliciosa (https://evil.com) en otra, el JavaScript de evil.com podría hacer peticiones en segundo plano usando tus cookies y leer tus datos privados. SOP impide que un origen externo lea las respuestas de otro dominio.
2. Cómo funciona CORS de forma segura
Cuando tu frontend (https://app.empresa.com) y tu API (https://api.empresa.com) están en subdominios distintos, el servidor debe autorizar explícitamente al origen mediante una lista blanca (Whitelist):
Access-Control-Allow-Origin: https://app.empresa.com
Access-Control-Allow-Credentials: true3. Peticiones Preflight (OPTIONS) y Access-Control-Max-Age
Al enviar Content-Type: application/json o métodos como PUT/DELETE, el navegador envía primero una petición oculta OPTIONS (Preflight) para pedir permiso. Para evitar duplicar la latencia de red en cada llamada a la API, puedes indicar al navegador que guarde en caché ese permiso:
Access-Control-Max-Age: 86400Con esta cabecera, el navegador almacena la autorización CORS en su caché durante 24 horas y elimina las peticiones OPTIONS repetitivas.
Hoja de ruta y herramienta interactivas
Desarrollador Frontend Junior 2026
Lo que realmente necesitas saber para conseguir un trabajo de frontend junior en 2026 y lo que puede esperar, a partir de ofertas reales.
¿SQL o NoSQL?
Responde seis preguntas y te diré qué tipo de base de datos encaja con tu proyecto, y por qué.
Sigue leyendo
- CZES¿Qué es un Circuit Breaker? Cómo evitar fallos en cascada (Cascading Failures)
¿Qué es un Circuit Breaker? Cómo evitar fallos en cascada (Cascading Failures)
29 de octubre de 2026 · 3 min de lectura - CZESCortando el ruido: ¿qué lenguaje y framework de backend deberías elegir en 2026?
Cortando el ruido: ¿qué lenguaje y framework de backend deberías elegir en 2026?
25 de octubre de 2026 · 4 min de lectura