Introducción al Error CORS en el Desarrollo Web
Uno de los dolores de cabeza más comunes para los desarrolladores frontend y backend es el bloqueo por parte del navegador debido a la política de mismo origen (Same-Origin Policy). El error CORS (Cross-Origin Resource Sharing) ocurre cuando una aplicación web realiza una petición HTTP a un dominio, puerto o protocolo diferente al suyo y el servidor no incluye los encabezados de respuesta adecuados.
Causas Principales del Error CORS
El navegador bloquea automáticamente la respuesta de la solicitud por motivos de seguridad si se cumplen las siguientes condiciones:
- El frontend y el backend están en diferentes dominios o subdominios.
- Ambas aplicaciones corren en el mismo servidor pero en puertos diferentes (por ejemplo, frontend en
http://localhost:3000y backend enhttp://localhost:5000). - La petición no incluye los encabezados HTTP correctos permitiendo el intercambio de recursos entre distintos orígenes.
Método 1: Configurar CORS en Node.js usando Express
La forma más rápida y recomendada de solucionar este problema en un entorno de Node.js con Express es utilizando el paquete oficial cors.
- Instala el paquete en tu proyecto ejecutando el siguiente comando en tu terminal:
npm install cors - Importa y configura el middleware en tu archivo principal (ej.
server.jsoapp.js):const express = require('express');const cors = require('cors');const app = express();app.use(cors()); - Reinicia tu servidor backend y vuelve a probar la petición desde el frontend.
Método 2: Configurar Encabezados HTTP Manualmente
Si no deseas instalar paquetes adicionales, puedes configurar los encabezados de respuesta manualmente mediante un middleware personalizado en tu servidor.
- Abre tu archivo de configuración del servidor backend.
- Agrega el siguiente middleware antes de definir tus rutas:
app.use((req, res, next) => {res.setHeader('Access-Control-Allow-Origin', '*');res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');next();}); - Guarda los cambios, reinicia la aplicación y verifica que el error haya desaparecido de la consola del navegador.