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
Apps

Cómo Solucionar el Error de WhatsApp Web que no Conecta o se Desconecta de Forma Definitiva

WhatsApp Web es una herramienta esencial para el trabajo diario, pero los fallos de sincronización y desconexión son comunes. Descubre cómo resolverlos definitivamente.

Leer guía completa →
Shopify

Cómo Solucionar el Error de Timeout en Webhooks de Shopify Paso a Paso

Aprende a diagnosticar y resolver los molestos errores de timeout en los webhooks de tu tienda Shopify. Soluciones técnicas efectivas paso a paso.

Leer guía completa →
WordPress

Cómo Solucionar la Pantalla Blanca de la Muerte en WordPress Paso a Paso

La pantalla blanca de la muerte en WordPress impide el acceso a tu sitio y panel de administración. Descubre cómo identificar la causa y solucionarlo rápidamente.

Leer guía completa →