Comprobador de CORS
Verifica la configuración de Intercambio de Recursos de Origen Cruzado (CORS) para cualquier URL. Inspecciona los encabezados de respuesta Access-Control-*, ejecuta una solicitud de preflight (OPTIONS) opcional con un Origen/método/encabezados personalizados, y detecta configuraciones erróneas comunes como comodín + credenciales, falta de Vary: Origin, o allow-headers demasiado amplios.
Características
- Inspección de encabezados CORS para cualquier URL pública (Access-Control-* y encabezados relacionados).
- Simulación de preflight opcional (OPTIONS) con Origen, método de solicitud y encabezados de solicitud personalizados.
- Seguir redirecciones (hasta 10) para validar el endpoint final que realmente alcanzan los navegadores.
- Vista de encabezados sin procesar para total transparencia y depuración.
- Hallazgos + tarjeta de puntuación con filtro de "solo problemas" para triaje rápido.
- Análisis Vary para detectar la falta de Vary: Origin y otras trampas de CORS relacionadas con la caché.
- Exportar resultados como informes JSON y PDF para auditorías, tickets y documentación.
- Recomendaciones integradas para problemas comunes: comodín+credenciales, reflejo de Origen, Origen nulo, falta de allow-methods/allow-headers, falta de max-age y allow-headers demasiado amplios.
🧭 Cómo usar for cors-checker
Introduce la URL de destino
Pega el endpoint que quieres probar (por ejemplo, https://api.example.com/resource).
Establece el Origen desde el que estás probando
Introduce el Origen de tu aplicación frontend (esquema + host), por ejemplo, https://app.example.com. Este es el valor que los navegadores envían en el encabezado Origin.
Elige un modo de verificación
Usa Automático (recomendado) para analizar tanto los encabezados de respuesta como el comportamiento de preflight. Usa Solicitud simple si específicamente quieres un escenario sin preflight, o Solo preflight para ejecutar verificaciones OPTIONS.
Configura los detalles del preflight (si aplica)
Habilita "Ejecutar Preflight (OPTIONS)" y establece el Método de Solicitud más los Encabezados de Solicitud (separados por comas) para simular el comportamiento real de preflight del navegador (por ejemplo, autorización, content-type). Activa "Considerar credenciales" si tu caso de uso incluye cookies o encabezados de autenticación.
Revisa los hallazgos y exporta
Revisa los hallazgos/la tarjeta de puntuación y los detalles del análisis CORS. Activa "Mostrar Encabezados Sin Procesar" al depurar. Exporta JSON/PDF para compartir o almacenar en auditorías.
Especificaciones técnicas
Modelo de solicitud
La herramienta inspecciona los encabezados CORS para una URL de destino y puede realizar opcionalmente una solicitud de preflight (OPTIONS) usando el Origen, método y encabezados solicitados proporcionados. Se admite el seguimiento de redirecciones.
| Configuración | Comportamiento | Predeterminado |
|---|---|---|
| Modo de Verificación | Automático, Solicitud simple, o Solo Preflight | Automático |
| Ejecutar Preflight (OPTIONS) | Si está habilitado, realiza una simulación de preflight OPTIONS | Habilitado |
| Origen | Valor del encabezado Origin utilizado para análisis/preflight | https://example.com |
| Método de Solicitud | Valor Access-Control-Request-Method para preflight | GET |
| Encabezados de Solicitud | Access-Control-Request-Headers (separados por comas) para preflight | Vacío |
| Seguir Redirecciones | Sigue la cadena de redirecciones hasta la URL final | Habilitado |
| Redirecciones Máximas | Límite de redirecciones para evitar bucles | 10 (rango 0–20) |
| Tiempo de Espera | Límite de tiempo de espera de la solicitud | 15000 ms |
| Agente de Usuario | Identifica el agente de usuario de la solicitud | Encode64Bot/1.0 (+https://encode64.com) |
| Redes privadas | Bloquea el acceso a rangos de red privados por seguridad | Deshabilitado (redes privadas no permitidas) |
Encabezados analizados (conjunto principal de CORS)
El analizador se centra en los encabezados estándar de respuesta y solicitud de CORS utilizados por los navegadores y las verificaciones de preflight.
| Encabezado | Propósito |
|---|---|
| Access-Control-Allow-Origin | Qué Origen(es) están permitidos |
| Access-Control-Allow-Credentials | Si se permiten cookies/credenciales (requiere origen no comodín) |
| Access-Control-Allow-Methods | Métodos permitidos para solicitudes de origen cruzado (importante para la verificación previa) |
| Access-Control-Allow-Headers | Encabezados permitidos (importante para Authorization y encabezados personalizados) |
| Access-Control-Expose-Headers | Qué encabezados son legibles por el JS del navegador |
| Access-Control-Max-Age | Cuánto tiempo puede almacenarse en caché la verificación previa por el navegador |
| Vary | Variación de clave de caché (ej., Vary: Origin) para evitar envenenamiento/mezcla de caché |
| Origin / Access-Control-Request-* | Utilizado para simular el comportamiento de verificación previa |
Heurísticas (errores comunes de CORS señalados)
Los hallazgos se basan en comprobaciones prácticas y orientadas a la seguridad para detectar configuraciones de CORS rotas o riesgosas.
| Comprobación | Por qué es importante |
|---|---|
| Comodín + credenciales | Access-Control-Allow-Origin: * no puede usarse con credenciales; los navegadores bloquearán o el comportamiento es inseguro |
| Falta Vary: Origin | Si las respuestas varían por Origin pero no se almacenan en caché correctamente, las cachés compartidas pueden mezclar respuestas entre sitios |
| Reflejar el Origin | Hacer eco ciegamente del Origin puede permitir involuntariamente orígenes no confiables |
| Advertencias de Origin nulo | Origin: null puede aparecer en iframes aislados o contextos de archivo; permitirlo suele ser riesgoso |
| Falta Allow-Methods / Allow-Headers | La verificación previa puede fallar si el servidor no permite explícitamente el método/encabezados |
| Allow-Headers demasiado amplio | Permitir demasiados encabezados puede expandir la superficie de ataque |
| Falta Max-Age | La verificación previa puede ejecutarse con demasiada frecuencia, añadiendo latencia |
Línea de comandos
Utilice estos comandos para reproducir el comportamiento de CORS y la verificación previa desde su terminal. Son útiles para depurar y verificar lo que reporta la herramienta.
macOS / Linux
Verificar encabezados CORS para una solicitud normal (simular un Origin del navegador)
curl -i -H "Origin: https://example.com" https://api.example.com/resourceBusque Access-Control-Allow-Origin, Access-Control-Allow-Credentials y Vary.
Ejecutar una solicitud OPTIONS de verificación previa (método + encabezados)
curl -i -X OPTIONS -H "Origin: https://app.example.com" -H "Access-Control-Request-Method: POST" -H "Access-Control-Request-Headers: authorization, content-type" https://api.example.com/privateLa verificación previa debe devolver los Access-Control-Allow-Methods y Access-Control-Allow-Headers correctos para que el navegador proceda.
Seguir redirecciones mientras se verifican las cabeceras
curl -iL -H "Origin: https://example.com" https://api.example.comÚtil cuando los endpoints redirigen a un host diferente que tiene reglas CORS distintas.
Windows (PowerShell)
Inspeccionar las cabeceras de respuesta con una cabecera Origin
$r = Invoke-WebRequest -Uri https://api.example.com/resource -Headers @{ Origin = "https://example.com" }; $r.HeadersMuestra las cabeceras Access-Control-* si están presentes.
Casos de uso
Depurar un error del navegador "CORS bloqueado" en el frontend
Cuando fetch/XHR falla con un error CORS, verifica si el servidor devuelve las cabeceras Access-Control-* requeridas para tu Origen y tipo de solicitud.
- Confirmar que Access-Control-Allow-Origin coincide con el origen de tu aplicación
- Si usas cookies/autenticación, verifica que Access-Control-Allow-Credentials sea true (y que el origen no sea un comodín)
- Asegurar que Vary: Origin esté presente cuando se permiten múltiples orígenes
Validar la pre-solicitud (preflight) para Authorization / cabeceras personalizadas
La mayoría de las llamadas API autenticadas activan una pre-solicitud debido a Authorization o tipos de contenido no simples. Esta herramienta ayuda a asegurar que las respuestas OPTIONS permitan el método y las cabeceras requeridas.
- Verificar que Access-Control-Allow-Methods incluya POST/PUT/PATCH/DELETE según sea necesario
- Verificar que Access-Control-Allow-Headers incluya authorization, content-type y las cabeceras X-* requeridas
- Detectar allow-methods/allow-headers faltantes antes del despliegue
Revisión de seguridad de la política CORS
Las configuraciones incorrectas de CORS pueden exponer APIs privadas a sitios maliciosos sin intención (especialmente con credenciales). Usa los hallazgos para detectar patrones de alto riesgo.
- Detectar origen comodín combinado con credenciales
- Detectar patrones de origen reflejado que permiten sitios arbitrarios
- Marcar el permiso de Origin: null cuando no está previsto
Mejorar el rendimiento almacenando en caché la pre-solicitud
Las solicitudes de pre-solicitud añaden viajes de ida y vuelta y latencia. Un Max-Age correcto puede reducir las verificaciones de pre-solicitud repetidas para APIs estables.
- Verificar que Access-Control-Max-Age esté presente cuando sea apropiado
- Reducir las llamadas OPTIONS repetidas para tráfico API frecuente
❓ Frequently Asked Questions
❓¿Qué es CORS en términos simples?
CORS (Intercambio de Recursos de Origen Cruzado) es un mecanismo de seguridad del navegador que controla si una página web de un origen (esquema + host + puerto) puede leer respuestas de otro origen. Se basa en cabeceras de respuesta específicas Access-Control-*.❓¿Cuándo envía un navegador una solicitud de pre-solicitud (OPTIONS)?
❓¿Por qué es peligroso "Access-Control-Allow-Origin: *" con credenciales?
❓¿Por qué necesito Vary: Origin?
❓¿Puede CORS proteger mi API de clientes que no son navegadores?
CORS es aplicado por los navegadores. Los scripts que se ejecutan fuera de un navegador (servidores, curl, aplicaciones móviles) pueden llamar a tu API independientemente de CORS. Utiliza autenticación, autorización y limitación de tasa para un control de acceso real.❓¿Qué debo poner en "Encabezados de Solicitud" al probar la pre-solicitud?
❓¿Es seguro pegar URLs aquí?
Pro Tips
Prefiere una lista de permitidos de orígenes confiables en lugar de reflejar cualquier Origen. Trata CORS como una configuración sensible a la seguridad.
Si usas cookies/autenticación, establece Access-Control-Allow-Credentials: true Y devuelve un origen explícito (no "*").
Agrega Vary: Origin cuando permitas múltiples orígenes o selecciones dinámicamente el origen permitido.
Agrega un Access-Control-Max-Age razonable para reducir la latencia de pre-solicitud en APIs estables.
Prueba tanto la ruta de pre-solicitud como la de la solicitud real; algunas configuraciones devuelven encabezados correctos para GET pero fallan en OPTIONS.
Exporta informes JSON y guárdalos junto con los cambios de configuración de la puerta de enlace de API para detectar regresiones rápidamente.
Additional Resources
Other Tools
- Embellecedor CSS
- Embellecedor HTML
- Embellecedor JavaScript
- Embellecedor PHP
- Selector de Color
- Extractor de Sprites
- Codificador Binario Base32
- Decodificador Base32
- Codificador Base32
- Codificador Binario Base58
- Decodificador Base58
- Codificador Base58
- Codificador Binario Base62
- Decodificador Base62
- Codificador Base62
- Codificador Binario Base64
- Decodificador Base64
- Codificador Base64
- Codificador Binario Hexadecimal
- Decodificador Hexadecimal
- Codificador Hexadecimal
- Formateador C#
- Formateador CSV
- Dockerfile Formatter
- Formateador Elm
- Formateador ENV
- Formateador Go
- Formateador GraphQL
- Formateador HCL
- Formateador INI
- Formateador JSON
- Formateador LaTeX
- Formateador Markdown
- Formateador Objective-C
- Php Formatter
- Formateador Proto
- Formateador Python
- Formateador Ruby
- Formateador Rust
- Formateador Scala
- Formateador de Scripts de Shell
- Formateador SQL
- Formateador SVG
- Formateador Swift
- Formateador TOML
- Typescript Formatter
- Formateador XML
- Formateador YAML
- Formateador Yarn
- Minificador CSS
- Html Minifier
- Javascript Minifier
- Minificador JSON
- Minificador XML
- Cache Headers Analyzer
- Csp Analyzer
- Dns Records Lookup
- Visor de Encabezados HTTP
- Http Status Checker
- Open Graph Meta Checker
- Redirect Chain Viewer
- Robots Txt Tester
- Security Headers Checker
- Security Txt Checker
- Sitemap Url Inspector
- Tls Certificate Checker
- PDF a Texto
- Probador de Expresiones Regulares
- Verificador de Posición en SERP
- Consulta Whois