Cómo Solucionar el Error CORS en JavaScript y Fetch API Paso a Paso

Cómo Solucionar el Error CORS en JavaScript y Fetch API Paso a Paso
Anuncio relacionado

Introducción al Error CORS en JavaScript

El error CORS (Cross-Origin Resource Sharing) es uno de los dolores de cabeza más comunes para los desarrolladores web frontend cuando intentan consumir APIs desde un dominio, puerto o protocolo diferente al del servidor de origen. Cuando realizas una petición mediante la Fetch API o Axios, el navegador bloquea la respuesta por razones de seguridad, mostrando en la consola un mensaje como Access to fetch at 'URL' from origin 'null' has been blocked by CORS policy.

Causas Principales del Error CORS

Este mecanismo de seguridad del navegador se activa debido a varios factores comunes en el desarrollo moderno:

  • El servidor backend no incluye las cabeceras HTTP necesarias para permitir solicitudes desde tu origen frontend.
  • Intentas realizar una petición con credenciales (como cookies o tokens de autorización) sin la configuración adecuada en el cliente y el servidor.
  • El navegador bloquea solicitudes previas de tipo OPTIONS (peticiones de verificación previa o preflight) porque el servidor no las responde correctamente.

Método 1: Configurar las Cabeceras HTTP en el Servidor (Backend)

La solución más robusta y recomendada es configurar tu servidor backend para que permita explícitamente las solicitudes desde tu dominio frontend. Dependiendo de tu tecnología, debes añadir las siguientes cabeceras HTTP en cada respuesta:

Ejemplo básico en Node.js con Express:

app.use((req, res, next) => { res.setHeader('Access-Control-Allow-Origin', 'http://localhost:3000'); res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE'); res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization'); next();});
  1. Identifica el archivo principal de configuración de tu servidor backend.
  2. Añade el middleware o las directivas para aceptar el origen de tu aplicación frontend.
  3. Reinicia el servidor backend y verifica que las peticiones Fetch ya no arrojen el error en la consola.

Método 2: Configurar un Proxy Inverso en Desarrollo

Si estás desarrollando una aplicación de frontend (por ejemplo, con React, Vue o Vite) y no tienes acceso para modificar el servidor backend de terceros o de producción, puedes configurar un proxy local en tu entorno de desarrollo.

Si usas Vite, edita tu archivo vite.config.js de la siguiente manera:

export default defineConfig({ server: { proxy: { '/api': { target: 'https://api.ejemplo.com', changeOrigin: true, rewrite: (path) => path.replace(/^/api/, '') } } }});
  1. Modifica tu archivo de configuración del empaquetador frontend (Vite, Webpack, etc.).
  2. Redirige las rutas locales que comiencen con /api hacia la URL del servidor externo.
  3. Actualiza tus peticiones Fetch en JavaScript para que apunten a la ruta local relativa (ej. fetch('/api/datos')) en lugar de la URL absoluta.
Anuncio
Seguir Leyendo

Guías y Soluciones Relacionadas

Windows Apps Juegos
Desarrollo

Cómo Solucionar el Error 'You have an error in your SQL syntax' en MySQL Paso a Paso

Descubre por qué ocurre el error de sintaxis en tus consultas MySQL y cómo solucionarlo eficazmente en pocos minutos. ¡Evita caídas en tus aplicaciones!

Leer guía completa →
Mac

Cómo Solucionar el Error de Permisos de Disco en Mac con Utilidad de Discos Paso a Paso

Tu Mac va lento o da fallos inesperados? Descubre cómo solucionar los problemas de permisos de disco utilizando la herramienta nativa de macOS.

Leer guía completa →
Linux

Cómo Solucionar el Error Permission Denied en Linux Paso a Paso

¿Te aparece el error Permission Denied al intentar ejecutar un archivo o script en tu terminal de Linux? Descubre cómo solucionarlo modificando permisos y propietarios correctamente.

Leer guía completa →