Cómo Solucionar el Error CORS (Cross-Origin Resource Sharing) en JavaScript de Forma Definitiva

Cómo Solucionar el Error CORS (Cross-Origin Resource Sharing) en JavaScript de Forma Definitiva
Anuncio relacionado

¿Qué es el Error CORS en JavaScript y por qué ocurre?

El error CORS (Cross-Origin Resource Sharing o Intercambio de Recursos de Origen Cruzado) es un mecanismo de seguridad implementado por los navegadores web modernos. Su función principal es restringir las solicitudes HTTP que se realizan desde scripts ejecutados en un dominio hacia un servidor ubicado en un dominio, puerto o protocolo diferente.

Cuando intentas consumir una API externa utilizando JavaScript mediante fetch(), axios o XMLHttpRequest sin la configuración adecuada en el servidor, el navegador bloquea la respuesta y muestra el temido mensaje en la consola de desarrollo: Access to fetch at '...' from origin '...' has been blocked by CORS policy.

Causas Principales del Error CORS

  • Ausencia de las cabeceras HTTP de control de acceso (como Access-Control-Allow-Origin) en la respuesta del servidor.
  • Intento de enviar credenciales (como cookies o tokens de autorización) sin la configuración explícita en el cliente y el servidor.
  • Bloqueo de solicitudes de tipo preflight (peticiones OPTIONS) debido a que el servidor no responde correctamente a este método HTTP previo.
  • Diferencia de puertos o protocolos (por ejemplo, intentar conectar un frontend en http://localhost:3000 con un backend en http://localhost:5000).

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

La solución más robusta y recomendada para producción es configurar el servidor backend para que permita explícitamente solicitudes desde tu dominio de frontend. A continuación se muestra un ejemplo utilizando Node.js con Express:

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

const express = require('express'); const cors = require('cors'); const app = express(); // Permitir todas las peticiones de origen cruzado app.use(cors()); app.get('/api/data', (req, res) => { res.json({ message: '¡CORS configurado con éxito!' }); }); app.listen(5000, () => console.log('Servidor corriendo en puerto 5000'));

Método 2: Usar un Servidor Proxy para Entornos de Desarrollo

Si estás desarrollando localmente y no tienes acceso para modificar el código del backend de terceros o API pública, puedes configurar un proxy en tu herramienta de desarrollo (como Vite, Webpack 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. Ahora, en lugar de realizar la petición a la URL completa, hazla apuntando a tu ruta local relativa: fetch('/api/recurso'). El navegador creerá que la petición es del mismo origen y evitará el bloqueo CORS.
Anuncio
Seguir Leyendo

Guías y Soluciones Relacionadas

Windows Apps Juegos
Juegos

Cómo Solucionar el Error de la Pantalla Azul de la Muerte (BSOD) al Jugar en PC de Forma Definitiva

La Pantalla Azul de la Muerte (BSOD) al ejecutar videojuegos interrumpe tus partidas y frustra a cualquier gamer. Aprende a diagnosticar y solucionar este problema de forma definitiva.

Leer guía completa →
Juegos

Cómo Solucionar el Error ERR_GFX_D3D_INIT en GTA V de Forma Definitiva

¿El juego se cierra inesperadamente con el error ERR_GFX_D3D_INIT? Aprende las mejores soluciones para reparar este fallo gráfico en PC.

Leer guía completa →
Apps

Cómo Solucionar el Error de Sincronización en OneDrive de Forma Definitiva

¿Tus archivos de OneDrive no se sincronizan correctamente y aparece una cruz roja? Descubre los métodos definitivos para resolver este molesto problema de la aplicación.

Leer guía completa →