CORS para JavaScript (Node.js): guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Librería CORS para JavaScript (Node.js): Guía completa

1. ¿Qué es y para qué sirve?

CORS (Cross-Origin Resource Sharing) es un mecanismo de seguridad implementado en los navegadores que controla el acceso a recursos (APIs, fuentes, scripts) desde páginas web cargadas en un dominio diferente (origin). Por defecto, los navegadores bloquean las solicitudes HTTP iniciadas por scripts (por ejemplo, mediante fetch o XMLHttpRequest) si están dirigidas a un dominio distinto al de la página que las originó. Esto previene ataques como CSRF (Cross-Site Request Forgery) y la fuga de datos.

La librería cors para Node.js y Express es un middleware que permite a los desarrolladores configurar y gestionar fácilmente las políticas CORS del lado del servidor. En lugar de escribir manualmente las cabeceras (Access-Control-Allow-Origin, Access-Control-Allow-Methods, etc.) y manejar las solicitudes de verificación previa (preflight requests con el método OPTIONS), esta librería automatiza todo el proceso. Se integra en la cadena de procesamiento de solicitudes de Express y añade las cabeceras necesarias a las respuestas.

¿Para qué sirve? Si estás desarrollando una API en Node.js que será consumida por una aplicación frontend (React, Vue, Angular), una aplicación móvil o un servicio de terceros desde otro dominio (por ejemplo, api.misitio.com para app.misitio.com), es obligatorio configurar CORS. Sin esto, el navegador simplemente bloqueará las solicitudes y el usuario verá un error en la consola. La librería cors hace que esta configuración sea flexible, segura y sencilla.

2. Instalación

La instalación se realiza a través del gestor de paquetes npm (Node Package Manager). Asegúrate de tener Node.js y npm instalados.

npm install cors

Después de la instalación, el paquete se agregará a node_modules y aparecerá una entrada en el archivo package.json.

Si usas yarn:

yarn add cors

3. Inicio rápido — ejemplo mínimo funcional

La forma más sencilla de usar CORS es habilitarlo para todas las solicitudes. Esto es ideal para desarrollo o APIs públicas donde se permite el acceso desde cualquier dominio.

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

const app = express();

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

app.get('/api/data', (req, res) => {
    res.json({ message: '¡Esta respuesta está permitida para todos los orígenes!' });
});

app.listen(3000, () => {
    console.log('Servidor iniciado en el puerto 3000');
});

En este ejemplo, cualquier solicitud desde cualquier dominio (por ejemplo, http://localhost:8080 o https://ejemplo.com) a /api/data será procesada correctamente. El navegador no bloqueará la respuesta.

4. Métodos/funciones/clases principales

La librería cors proporciona una función principal — cors(options) — que devuelve una función middleware. Sin embargo, la configuración se pasa a través de un objeto options, lo que brinda una gran flexibilidad. Veamos 8 opciones y métodos clave.

4.1. cors() — configuración básica (todo permitido)

Firma: cors(options?: CorsOptions)

Qué hace: Crea un middleware que añade las cabeceras CORS a la respuesta. Sin argumentos, permite el acceso desde cualquier origen (*), cualquier método y cualquier cabecera.

Recommendations