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

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

Introducción al Error de CORS en el Desarrollo Web

Uno de los dolores de cabeza más comunes al desarrollar aplicaciones web modernas es encontrarse con el temido error de CORS (Cross-Origin Resource Sharing) en la consola del navegador al utilizar la Fetch API o Axios. Este mecanismo de seguridad implementado por los navegadores bloquea las peticiones HTTP realizadas desde un dominio (origen) hacia un servidor distinto.

Causas Principales del Error CORS

El error se dispara principalmente por las siguientes razones:

  • El servidor de destino no incluye las cabeceras HTTP necesarias (como Access-Control-Allow-Origin).
  • La petición se realiza desde un origen local (ej. http://localhost:3000) a una API en producción sin el permiso explícito.
  • Se envían credenciales o cabeceras personalizadas sin la configuración previa del navegador (peticiones preflight con el método OPTIONS).

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

La solución más robusta y recomendada es configurar tu servidor backend para que permita solicitudes desde tu origen de desarrollo o producción. Si estás usando Node.js con Express, puedes hacerlo fácilmente instalando y configurando el middleware cors.

  1. Instala el paquete en tu proyecto de Node.js ejecutando: npm install cors
  2. Importa y utiliza el middleware en tu archivo principal (ej. app.js o server.js):

const express = require('express'); const cors = require('cors'); const app = express(); // Permitir todos los origenes (solo para desarrollo) app.use(cors()); app.get('/api/data', (req, res) => { res.json({ mensaje: 'CORS solucionado con exito' }); }); app.listen(3000);

Método 2: Usar un Servidor Proxy en el Frontend durante el Desarrollo

Si no tienes acceso al código del servidor backend y necesitas evitar el bloqueo CORS mientras desarrollas localmente, puedes configurar un proxy en tu entorno de desarrollo de frontend (como Vite o React Scripts).

  1. Si utilizas Vite, abre tu archivo vite.config.js y añade la propiedad server.proxy:

export default defineConfig({ server: { proxy: { '/api': { target: 'https://api.ejemplo.com', changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, '') } } } });

  1. Realiza tus peticiones en JavaScript apuntando a la ruta relativa (ej. fetch('/api/recurso')) en lugar de la URL completa.

Método 3: Configurar la Petición Fetch con el Modo Correcto

En ocasiones, configurar el objeto de opciones en la Fetch API puede ayudar a mitigar problemas menores de interoperabilidad, aunque no reemplaza la necesidad de las cabeceras en el servidor.

fetch('https://api.ejemplo.com/datos', { method: 'GET', mode: 'cors', headers: { 'Content-Type': 'application/json' } }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error('Error CORS o de red:', error));

Anuncio
Seguir Leyendo

Guías y Soluciones Relacionadas

Windows Apps Juegos
PrestaShop

Cómo Solucionar el Error 500 (Internal Server Error) en PrestaShop Paso a Paso

El error 500 en PrestaShop bloquea tu tienda online impidiendo el acceso a clientes y administradores. Aprende a identificar la causa y solucionarlo definitivamente.

Leer guía completa →
Desarrollo

Cómo Solucionar el Error de Merge Conflict en Git de Forma Definitiva

Descubre el método definitivo para resolver conflictos de merge en tus repositorios Git sin romper tu código ni perder cambios importantes.

Leer guía completa →
Magento

Cómo Solucionar el Error 'Exception printing is disabled by default' en Magento 2

Este problema en Magento 2 oculta los fallos reales de la tienda por motivos de seguridad. Aprende a habilitar el reporte de errores detallado y resolver el origen de la falla en pocos minutos.

Leer guía completa →