Cómo Solucionar el Error CORS (Access-Control-Allow-Origin) en JavaScript Paso a Paso

Cómo Solucionar el Error CORS (Access-Control-Allow-Origin) en JavaScript Paso a Paso
Anuncio relacionado

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

El error CORS (Cross-Origin Resource Sharing) es un mecanismo de seguridad implementado por los navegadores web que restringe las solicitudes HTTP realizadas desde un dominio (origen) hacia un servidor ubicado en un dominio diferente. Cuando intentas consumir una API externa desde tu aplicación JavaScript y recibes un mensaje en la consola como Access to fetch at 'https://api.ejemplo.com/datos' from origin 'http://localhost:3000' has been blocked by CORS policy, significa que el servidor de destino no ha autorizado explícitamente a tu origen para recibir los datos.

Causas principales del bloqueo CORS

Las causas más comunes de este fallo en el desarrollo web moderno incluyen:

  • Falta de cabeceras HTTP de control de acceso en el servidor backend.
  • Diferencias en el protocolo (HTTP frente a HTTPS), el puerto o el nombre de dominio entre el cliente y el servidor.
  • Solicitudes preflight (peticiones OPTIONS) mal configuradas o rechazadas por el servidor.

Método 1: Configurar las cabeceras HTTP en el Servidor (Node.js/Express)

La forma más correcta y recomendada de solucionar el error CORS es configurar el servidor backend para que permita solicitudes desde tu origen. Si utilizas Node.js con Express, puedes hacerlo utilizando el paquete oficial cors.

  1. Instala el paquete ejecutando npm install cors en la terminal de tu proyecto backend.
  2. Importa y utiliza el middleware en tu archivo principal (por ejemplo, server.js o app.js).

Ejemplo de código:

const express = require('express');
const cors = require('cors');
const app = express();

// Habilitar CORS para todas las rutas
app.use(cors());

app.get('/api/datos', (req, res) => {
  res.json({ mensaje: '¡CORS configurado con éxito!' });
);

app.listen(3000, () => console.log('Servidor corriendo en puerto 3000'));

Método 2: Usar un Proxy Inverso durante el Desarrollo (Vite / Webpack)

Si estás desarrollando en el frontend (con herramientas como React, Vue o Vite) y no tienes acceso al código del servidor backend, puedes evitar el bloqueo CORS configurando un proxy en tu empaquetador local para que redirija las peticiones como si vinieran del mismo origen.

  1. Abre el archivo de configuración de tu entorno de desarrollo (por ejemplo, vite.config.js).
  2. Añade la sección server.proxy para redirigir las peticiones que comiencen con /api hacia el servidor real.

Ejemplo de configuración en Vite:

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';

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

Guías y Soluciones Relacionadas

Windows Apps Juegos
Windows

Cómo Solucionar el Error Critical Process Died en Windows 10 y 11 Definitivamente

Aprende a solucionar el temido error de pantalla azul Critical Process Died en Windows con nuestra guía experta. Recupera la estabilidad de tu sistema hoy mismo.

Leer guía completa →
PrestaShop

Cómo Solucionar el Error 503 Backend Limit en PrestaShop de Forma Definitiva

El error 503 Backend Limit en PrestaShop puede arruinar tus conversiones. Aprende a identificar su causa y solucionarlo definitivamente.

Leer guía completa →
Hardware

Cómo Solucionar los Pitidos de la Placa Base al Arrancar el PC de Forma Definitiva

¿Tu PC emite pitidos extraños y no enciende? Aprende a identificar el código de error acústico y a solucionar el fallo de hardware fácilmente.

Leer guía completa →