Probador de CORS
Pruebe y depure las políticas de Cross-Origin Resource Sharing (CORS) y las solicitudes de API
¿Qué es CORS? CORS (Cross-Origin Resource Sharing) es un mecanismo que permite a los navegadores web realizar solicitudes de origen cruzado (dominio, protocolo o puerto diferente) desde scripts que se ejecutan en el navegador.
Encabezados CORS Clave
Access-Control-Allow-Origin
: Especifica qué orígenes tienen permitido acceder al recursoAccess-Control-Allow-Methods
: Especifica qué métodos HTTP están permitidosAccess-Control-Allow-Headers
: Especifica qué encabezados HTTP se pueden usarAccess-Control-Allow-Credentials
: Especifica si se deben incluir credenciales (cookies, autenticación HTTP)
💡 Soluciones CORS
Soluciones del Lado del Servidor
1. Express.js (Node.js):
const cors = require('cors'); app.use(cors({ origin: 'https://example.com', methods: ['GET', 'POST'], credentials: true }));
2. Spring Boot (Java):
@CrossOrigin(origins = "https://example.com") @RestController public class ApiController { ... }
Soluciones del Lado del Cliente
1. Usando un Servidor Proxy:
// package.json (React) "proxy": "http://localhost:3001"
2. JSONP (solo GET):
// Solución limitada pero simple fetch('api?callback=handleResponse')
🔧 Configuración de CORS por Entorno
Next.js
// next.config.js module.exports = { async headers() { return [ { source: '/api/:path*', headers: [ { key: 'Access-Control-Allow-Origin', value: '*' } ] } ] } }
Nginx
location /api { add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods "GET, POST, OPTIONS"; add_header Access-Control-Allow-Headers "Content-Type, Authorization"; }
Apache
# .htaccess Header always set Access-Control-Allow-Origin "*" Header always set Access-Control-Allow-Methods "GET, POST, OPTIONS" Header always set Access-Control-Allow-Headers "Content-Type, Authorization"
Configuración de CORS por Entorno
Escenarios de Prueba
- • Solicitud Simple: Pruebe el comportamiento básico de CORS con solicitudes GET
- • Solicitud Previa: Pruebe las solicitudes previas con métodos PUT/DELETE
- • Encabezados Personalizados: Pruebe las solicitudes con el encabezado de Autorización
- • Credenciales: Pruebe las solicitudes con cookies
- • Manejo de Errores: Pruebe los escenarios de falla
Consideraciones de Seguridad
- • Tenga cuidado con el uso de comodines (*) debido a riesgos de seguridad
- • Principio de privilegio mínimo: Solo permita los orígenes y métodos necesarios
- • Restricciones de credenciales: Solo permita orígenes específicos al incluir credenciales
- • Revisión regular: Revise y actualice periódicamente las políticas de CORS
Consejos de Depuración de CORS
Herramientas de Desarrollo del Navegador
- • Verifique las solicitudes OPTIONS en la pestaña Red
- • Busque mensajes de error de CORS en la Consola
- • Verifique los encabezados CORS en los Encabezados de Respuesta
Herramientas Útiles
- • Probador de CORS (esta herramienta)
- • Postman (para pruebas de API)
- • Comando curl (para pruebas directas del servidor)