Probador de CORS

Prueba las cabeceras CORS y las políticas de intercambio de recursos entre orígenes. Gratis, rápido y funciona por completo en tu navegador sin necesidad de registrarte.

Actualizado

Share:
Home/Website Tools/CORS Tester & Debugger

CORS Tester & Debugger

Test CORS headers for any API endpoint and debug cross-origin issues.

CORS Tester

Preguntas Frecuentes

¿Por qué mi navegador dice 'blocked by CORS policy' aunque la API funcione en Postman?

Postman y curl no son navegadores, así que ignoran por completo la política de mismo origen: envían la solicitud y leen la respuesta sin importar qué encabezados devuelva el servidor. Un navegador es más estricto: cuando el JavaScript de un origen llama a un esquema, dominio o puerto distinto, solo deja que tu código lea la respuesta si el servidor devuelve el encabezado Access-Control-Allow-Origin correcto. Si ese encabezado falta, la solicitud igual llega al servidor y devuelve datos, pero el navegador oculta la respuesta a tu script y registra el error de CORS. Por eso un endpoint puede parecer sano en Postman y fallar en la consola. Esta herramienta inspecciona los encabezados CORS reales que devuelve un servidor, para que puedas confirmar que el problema es de configuración del servidor y no de tu código de fetch. Pega tu endpoint para ver exactamente qué encabezados están presentes.

¿Qué es una solicitud de preflight de CORS y cuándo la envía el navegador?

Un preflight es una solicitud OPTIONS automática que el navegador envía antes de la solicitud real, preguntando al servidor si la llamada está permitida. Ocurre en solicitudes 'no simples': métodos como PUT, DELETE o PATCH, encabezados de solicitud personalizados, o tipos de contenido como application/json. El navegador incluye Access-Control-Request-Method y Access-Control-Request-Headers, y el servidor debe responder con valores coincidentes de Access-Control-Allow-Methods y Access-Control-Allow-Headers, o la solicitud real nunca se dispara. Las solicitudes GET y POST simples con encabezados estándar se saltan este paso. Como los preflights son invisibles en la mayoría del código de fetch, un handshake OPTIONS fallido es una causa común y confusa de errores de CORS. Este probador te permite enviar la solicitud como OPTIONS e inspeccionar los métodos y encabezados permitidos que reporta el servidor, para que verifiques el contrato de preflight directamente en lugar de adivinar a partir de un mensaje bloqueado en la consola.

¿Por qué falla Access-Control-Allow-Credentials cuando el origen es un comodín?

La especificación de CORS prohíbe combinar solicitudes con credenciales con un origen comodín, y todos los navegadores lo hacen cumplir. Cuando envías cookies o encabezados de autorización de origen cruzado, el servidor debe devolver un origen específico en Access-Control-Allow-Origin, nunca el asterisco genérico. Si un servidor responde con Access-Control-Allow-Credentials: true y Access-Control-Allow-Origin configurado como comodín al mismo tiempo, el navegador rechaza la respuesta de plano y tu solicitud falla, aunque los encabezados parezcan permisivos. La solución es reflejar el origen exacto de la solicitud en lugar de usar un comodín, y mantener el encabezado de credenciales en true. Esta herramienta marca exactamente esa combinación peligrosa como error en su análisis de CORS, para que la detectes antes de que rompa un front-end autenticado. Ejecuta tu endpoint con credenciales a través de ella para confirmar que el origen sea específico y no un comodín.

¿Es seguro usar un Access-Control-Allow-Origin comodín (*)?

Un origen comodín permite que cualquier sitio web de internet haga solicitudes de origen cruzado a tu API y lea la respuesta, lo cual está perfectamente bien para datos genuinamente públicos como conjuntos de datos abiertos, APIs públicas de solo lectura o JSON estático. Se vuelve arriesgado en el momento en que el endpoint devuelve algo sensible o es accesible con las cookies de un usuario, porque un sitio malicioso podría entonces llamarlo en nombre de un visitante. Como regla, restringe Access-Control-Allow-Origin a los dominios específicos que realmente necesitan acceso en lugar de abrirlo a todo el mundo, y nunca combines un comodín con credenciales. Este probador etiqueta un origen comodín como advertencia y un dominio específico como correcto, para que veas de un vistazo qué tan expuesto está un endpoint. Prueba tu URL aquí para comprobar si su política de origen se ajusta a la sensibilidad de los datos que sirve.

¿Qué hace el encabezado Access-Control-Max-Age por el rendimiento de CORS?

Access-Control-Max-Age le indica al navegador cuántos segundos puede almacenar en caché el resultado de una solicitud de preflight OPTIONS. Mientras esa caché sea válida, el navegador se salta el viaje de ida y vuelta adicional y envía la solicitud real directamente, lo que acelera notablemente las apps que disparan muchas solicitudes no simples al mismo endpoint. Sin él, el navegador puede repetir el preflight en cada llamada, añadiendo latencia. Los valores están limitados por el navegador —Chrome limita la caché a un par de horas sin importar un número mayor—, así que fijar un valor enorme no ayudará más allá de ese tope. Un Max-Age ausente simplemente significa que no hay ninguna caché de preflight. Esta herramienta lee el encabezado y traduce los segundos brutos a minutos en su análisis, para que juzgues rápidamente con qué agresividad se cachean los preflights. Prueba tu endpoint para ver si establece un Max-Age útil.

Acerca del Probador de CORS

El Probador de CORS comprueba cómo responde cualquier endpoint de API a las solicitudes de origen cruzado, para que puedas ver exactamente qué encabezados de CORS (Cross-Origin Resource Sharing) devuelve un servidor y por qué el navegador está bloqueando tu front-end. Introduce una URL, elige un método HTTP y la herramienta consulta el endpoint y muestra el código de estado, los encabezados relevantes de CORS, el conjunto completo de encabezados de respuesta y la primera parte del cuerpo de la respuesta. Está pensada para desarrolladores front-end, ingenieros de API y cualquiera que esté depurando el error "blocked by CORS policy" que aparece en la consola del navegador.

Como un navegador no permite que una página lea directamente una respuesta de origen cruzado, la herramienta envía tu solicitud a través de un proxy público (corsproxy.io) e inspecciona los encabezados que llegan de vuelta. Eso significa que la solicitud sí sale de tu dispositivo, así que prueba endpoints públicos o de staging en lugar de pegar credenciales privadas que no quieras que vea un tercero. No hace falta registro, cuenta ni instalación para usarla.

Qué comprueba el Probador de CORS

La herramienta lee y explica los encabezados estándar de respuesta CORS:

  • Access-Control-Allow-Origin — qué origen u orígenes permite el servidor. La herramienta indica si CORS está configurado en absoluto, y si el valor es un dominio específico o un comodín.
  • Access-Control-Allow-Methods — los verbos HTTP que el endpoint acepta en solicitudes de origen cruzado.
  • Access-Control-Allow-Headers — los encabezados de solicitud que el servidor aceptará en una solicitud con preflight.
  • Access-Control-Allow-Credentials — si se permiten cookies y encabezados de autorización.
  • Access-Control-Max-Age — durante cuánto tiempo, en segundos, el navegador puede almacenar en caché el resultado del preflight.
  • Access-Control-Expose-Headers — qué encabezados de respuesta puede leer tu JavaScript.

Puedes enviar la solicitud como GET, POST, PUT, DELETE, OPTIONS o PATCH, añadir encabezados de solicitud personalizados como pares clave-valor, y adjuntar un cuerpo de solicitud JSON para POST, PUT y PATCH. Los resultados se dividen en tres vistas: un Análisis de CORS en lenguaje sencillo, la lista completa de Encabezados de Respuesta (copiable) y el Cuerpo de la Respuesta.

Cómo leer el análisis

Cada hallazgo se etiqueta como correcto, advertencia, error o informativo, para que puedas revisar los resultados de un vistazo:

  • Un encabezado Access-Control-Allow-Origin ausente se marca como error: el servidor no tiene CORS configurado, así que los navegadores bloquearán la lectura.
  • Un origen comodín (*) se marca como advertencia, porque permite que cualquier sitio llame a la API. Eso está bien para datos totalmente públicos, pero es arriesgado para cualquier cosa sensible.
  • La combinación de Access-Control-Allow-Credentials: true con un origen comodín se marca como error, porque la especificación lo prohíbe y los navegadores la rechazan de plano. Las solicitudes con credenciales requieren un origen explícito.
  • Un valor de Max-Age se traduce a minutos para que puedas ver con qué agresividad se almacenan en caché las respuestas de preflight.

Por qué importa probar CORS

CORS es un mecanismo de seguridad del navegador: por defecto, el JavaScript de un origen no puede leer las respuestas de un origen distinto (un esquema, dominio o puerto diferente). Para solicitudes "no simples" —encabezados personalizados, tipos de contenido JSON o métodos como PUT y DELETE—, el navegador envía primero un preflight OPTIONS, y la solicitud real solo continúa si el servidor responde con los encabezados correctos. Cuando ese intercambio falla, la solicitud se bloquea antes de que tu código llegue a ver los datos, por eso los errores de CORS son tan frecuentes al conectar una single-page app con una API separada o un servicio de terceros.

Probar el endpoint directamente te dice si el problema está en el servidor (encabezados ausentes o mal configurados) y no en tu código de fetch. Cuando no se detectan encabezados CORS, el Probador de CORS también muestra fragmentos de configuración listos para pegar en Express.js y Node, Nginx y Apache .htaccess, para que puedas corregir el origen y los métodos en el servidor y volver a probar. Pega un endpoint arriba para ver cómo responde y obtener una lectura clara de su política de origen cruzado.