Contáctanos
Webflow Premium Partner Ehab Fayez
Volver a Agent Skills
Seguridad y Calidad

CORS Configuration

Configura headers de Cross-Origin Resource Sharing para controlar qué dominios pueden acceder a tus endpoints API.

Claude Code Cursor Copilot Windsurf Gemini CLI Codex

Descripción General

El middleware cors para Express.js proporciona una forma simple de habilitar y configurar headers de Cross-Origin Resource Sharing (CORS). CORS es un mecanismo de seguridad del navegador que restringe cómo las páginas web pueden hacer solicitudes a diferentes dominios. Sin configuración CORS adecuada, los navegadores bloquearán las aplicaciones frontend de llamar a tu API si están alojadas en orígenes diferentes.

El middleware soporta tanto solicitudes simples como de preflight, manejando OPTIONS de preflight automáticamente. Puedes configurar orígenes permitidos (dominios específicos, patrones regex o funciones dinámicas), métodos permitidos (GET, POST, PUT, DELETE), headers permitidos, headers expuestos, soporte de credenciales y max-age para caché de preflight. La configuración puede aplicarse globalmente o por ruta.

La configuración CORS adecuada es crítica para la seguridad. Configuraciones excesivamente permisivas (como permitir todos los orígenes con credenciales) pueden exponer tu API a ataques de falsificación de solicitudes entre sitios. El middleware soporta validación dinámica de origen, permitiendo verificar orígenes contra una base de datos o lista blanca en tiempo de ejecución, lo cual es esencial para aplicaciones multi-tenant.

¿Para Quién Es?

  • Permitir a un frontend React llamar a una API Express en un puerto diferente
  • Configurar CORS para dominios específicos en producción
  • Habilitar credenciales (cookies) para solicitudes entre orígenes
  • Configurar políticas CORS por ruta para endpoints públicos vs privados

Instalación

Configurar Claude Code
npm install cors && npm install -D @types/cors

Configuración

import cors from "cors"

app.use(cors({
  origin: ["https://myapp.com", "https://admin.myapp.com"],
  methods: ["GET", "POST", "PUT", "DELETE"],
  credentials: true,
  maxAge: 86400,
}))