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.
También en la biblioteca
TypeStack/routing-controllers para TypeScript: guía completa con ejemplos
Criptografía en Swift: cifrado y hash para iOS/macOS
Monitoreo de aplicaciones Kotlin: descripción general de herramientas y bibliotecas