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.

Loading…

Acerca de Comprobador CORS

Pega una URL de API o página y verifica si los navegadores permitirán solicitudes de origen cruzado. Esta herramienta analiza los encabezados de respuesta CORS, puede ejecutar una verificación de preflight (OPTIONS) realista y resalta configuraciones riesgosas o rotas (como "*" con credenciales, falta de Vary: Origin, o allow-methods/allow-headers débiles).

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

1

Introduce la URL de destino

Pega el endpoint que quieres probar (por ejemplo, https://api.example.com/resource).

2

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.

3

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.

4

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.

5

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ónComportamientoPredeterminado
Modo de VerificaciónAutomático, Solicitud simple, o Solo PreflightAutomático
Ejecutar Preflight (OPTIONS)Si está habilitado, realiza una simulación de preflight OPTIONSHabilitado
OrigenValor del encabezado Origin utilizado para análisis/preflighthttps://example.com
Método de SolicitudValor Access-Control-Request-Method para preflightGET
Encabezados de SolicitudAccess-Control-Request-Headers (separados por comas) para preflightVacío
Seguir RedireccionesSigue la cadena de redirecciones hasta la URL finalHabilitado
Redirecciones MáximasLímite de redirecciones para evitar bucles10 (rango 0–20)
Tiempo de EsperaLímite de tiempo de espera de la solicitud15000 ms
Agente de UsuarioIdentifica el agente de usuario de la solicitudEncode64Bot/1.0 (+https://encode64.com)
Redes privadasBloquea el acceso a rangos de red privados por seguridadDeshabilitado (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.

EncabezadoPropósito
Access-Control-Allow-OriginQué Origen(es) están permitidos
Access-Control-Allow-CredentialsSi se permiten cookies/credenciales (requiere origen no comodín)
Access-Control-Allow-MethodsMétodos permitidos para solicitudes de origen cruzado (importante para la verificación previa)
Access-Control-Allow-HeadersEncabezados permitidos (importante para Authorization y encabezados personalizados)
Access-Control-Expose-HeadersQué encabezados son legibles por el JS del navegador
Access-Control-Max-AgeCuánto tiempo puede almacenarse en caché la verificación previa por el navegador
VaryVariació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ónPor qué es importante
Comodín + credencialesAccess-Control-Allow-Origin: * no puede usarse con credenciales; los navegadores bloquearán o el comportamiento es inseguro
Falta Vary: OriginSi las respuestas varían por Origin pero no se almacenan en caché correctamente, las cachés compartidas pueden mezclar respuestas entre sitios
Reflejar el OriginHacer eco ciegamente del Origin puede permitir involuntariamente orígenes no confiables
Advertencias de Origin nuloOrigin: null puede aparecer en iframes aislados o contextos de archivo; permitirlo suele ser riesgoso
Falta Allow-Methods / Allow-HeadersLa verificación previa puede fallar si el servidor no permite explícitamente el método/encabezados
Allow-Headers demasiado amplioPermitir demasiados encabezados puede expandir la superficie de ataque
Falta Max-AgeLa verificación previa puede ejecutarse con demasiada frecuencia, añadiendo latencia
CORS es un mecanismo de aplicación del navegador. Los servidores aún pueden ser accesibles de origen cruzado a través de clientes que no son navegadores; trate CORS como parte de una postura de seguridad más amplia, no como el único control.

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/resource

Busque 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/private

La 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.Headers

Muestra las cabeceras Access-Control-* si están presentes.

Si tu frontend usa cookies o autenticación, evita CORS permisivo. Prefiere una lista de permitidos explícita de orígenes confiables e incluye Vary: Origin cuando las respuestas difieran por origen.

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)?

Se envía una pre-solicitud cuando la solicitud no es "simple", por ejemplo, al usar métodos como POST con ciertos tipos de contenido o al enviar cabeceras como Authorization o cabeceras personalizadas X-*. El navegador verifica los permisos mediante OPTIONS antes de enviar la solicitud real.

¿Por qué es peligroso "Access-Control-Allow-Origin: *" con credenciales?

Los navegadores requieren un origen explícito cuando hay credenciales involucradas. Usar un comodín con credenciales es inválido para solicitudes con credenciales e indica una configuración riesgosa. Prefiere una lista de permitidos explícita de orígenes confiables.

¿Por qué necesito Vary: Origin?

Si tu servidor devuelve diferentes valores de Access-Control-Allow-Origin dependiendo del Origin de la solicitud, las cachés deben variar según el Origin para evitar servir una respuesta destinada a un sitio a otro. Vary: Origin ayuda a prevenir la mezcla de caché y problemas de seguridad relacionados.

¿Puede CORS proteger mi API de clientes que no son navegadores?

No. 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?

Enumera los encabezados que enviará tu frontend, separados por comas (por ejemplo, authorization, content-type, x-request-id). Esto simula Access-Control-Request-Headers y verifica si el servidor los permite.

¿Es seguro pegar URLs aquí?

La herramienta realiza solicitudes del lado del servidor a la URL proporcionada y bloquea objetivos de red privada. Evita incluir secretos en las URLs (como tokens en cadenas de consulta) y prefiere endpoints públicos en los que confíes.

Pro Tips

Best Practice

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.

Best Practice

Si usas cookies/autenticación, establece Access-Control-Allow-Credentials: true Y devuelve un origen explícito (no "*").

Best Practice

Agrega Vary: Origin cuando permitas múltiples orígenes o selecciones dinámicamente el origen permitido.

Best Practice

Agrega un Access-Control-Max-Age razonable para reducir la latencia de pre-solicitud en APIs estables.

Best Practice

Prueba tanto la ruta de pre-solicitud como la de la solicitud real; algunas configuraciones devuelven encabezados correctos para GET pero fallan en OPTIONS.

CI Tip

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