Generador y probador de CORS — Solucionar “Bloqueado por la política CORS”

¿Te aparece “has been blocked by CORS policy”? Describe quién puede llamar a tu API (orígenes, métodos, cabeceras, credenciales) y obtén las cabeceras Access-Control-* correctas como código para Express, Nginx, Apache, Netlify, Vercel, Next.js, Cloudflare Workers o PHP. Después prueba una URL real: el probador envía el mismo preflight que enviaría un navegador y te explica, cabecera por cabecera, si la petición está permitida.

Actualizado el
Configuración CORS

Esta herramienta consulta desde nuestro servidor la URL pública que introduces. Los resultados se guardan unos minutos en memoria temporal y nunca en una base de datos.

Cómo usar: Generador y Probador CORS

  1. En Generar cabeceras, indica los orígenes que pueden llamar a tu API (o permite cualquiera), marca los métodos e introduce las cabeceras de petición que envía tu front end, normalmente Content-Type y Authorization.
  2. Marca Permitir credenciales solo si el navegador debe enviar cookies o una cabecera Authorization con credentials: 'include'.
  3. Elige tu plataforma y copia el código: Express, Nginx, Apache, Netlify, Vercel, Next.js, Workers o PHP.
  4. Despliega y cambia a Probar una URL: introduce la URL de la API y el origen de la página para ver si el preflight y la petición real pasarían.

Por qué los navegadores bloquean las peticiones

Una página en https://app.example.com solo puede leer una respuesta de https://api.example.com si la API lo permite con cabeceras CORS. Para cualquier cosa más allá de un GET simple o un POST de formulario (cuerpos JSON, cabeceras Authorization, PUT o DELETE), el navegador envía primero un preflight: una petición OPTIONS que pregunta «¿puede este origen usar este método y estas cabeceras?». Si la respuesta falta o es incorrecta, verás “has been blocked by CORS policy” y tu código nunca recibirá la respuesta.

CabeceraQué debe contener
Access-Control-Allow-OriginEl origen que hace la llamada exactamente, o * (no permitido con credenciales)
Access-Control-Allow-MethodsEl método de la petición real (solo en el preflight)
Access-Control-Allow-HeadersCada cabecera de petición no estándar, como Authorization o Content-Type: application/json
Access-Control-Allow-Credentialstrue cuando se envían cookies o credenciales
Access-Control-Max-AgeCuánto tiempo puede guardar el navegador la respuesta del preflight en caché
Vary: OriginNecesaria cuando el origen permitido cambia según la petición, para que las cachés no sirvan la respuesta de un origen a otro

Cómo funciona el probador

Nuestro servidor envía la petición con una cabecera Origin y, si el navegador la necesitaría, un preflight OPTIONS con Access-Control-Request-Method y -Headers, igual que Chrome o Firefox. Después comprueba la respuesta según las reglas CORS que aplican los navegadores. Los servidores que solo permiten ciertas direcciones IP o que necesitan cookies pueden responder de forma distinta a los usuarios reales. Relacionado: HTTP Header Checker, API Tester, Security Headers Checker.

También se busca como: generador de cabeceras cors, probador cors, comprobar cors online, bloqueado por política cors, access-control-allow-origin, test preflight cors, configurar cors express, cors nginx.

Herramientas que combinan con: Generador y Probador CORS

  • Generador CSP — Elige lo que carga tu sitio (scripts, estilos, imágenes, fuentes, analítica, embeds) y obtén una Content-Security-Policy que permite exactamente eso, con avisos sobre configuraciones arriesgadas.
  • cURL a código — Pega un comando curl, ya sea de la documentación de una API o de «Copiar como cURL» en las DevTools de tu navegador, y obtén código listo para ejecutar en seis lenguajes, con las cabeceras, el cuerpo y la autenticación incluidos.
  • Generador de configuraciones de Nginx — Elige qué quieres que haga Nginx —servir una página web estática o una SPA, actuar como proxy para una aplicación de Node/Python o ejecutar PHP— y marca las opciones adicionales.
  • Analizador de cabeceras de email — Pega las cabeceras sin procesar de un email para ver todo su recorrido: cada salto entre servidores con el tiempo que tardó, los resultados de SPF, DKIM y DMARC, la IP de origen y señales de alerta como un Reply-To o un Return-Path que no coinciden.

Preguntas frecuentes

¿Cómo soluciono “No Access-Control-Allow-Origin header is present”?
La API debe enviar Access-Control-Allow-Origin con el origen de tu página (o *). Genera aquí la configuración para tu servidor, despliégala y ejecuta el probador para confirmarlo. La solución siempre va en el servidor de la API, nunca en el código del front end.
¿Por qué no puedo usar * con credenciales?
Los navegadores rechazan Access-Control-Allow-Origin: * cuando la petición incluye cookies o credenciales. En su lugar, indica los orígenes exactos (o devuelve el Origin de la petición tras validarlo) y envía Access-Control-Allow-Credentials: true.
¿Por qué mi API devuelve 404 o 405 para OPTIONS?
El preflight es una petición OPTIONS que tus rutas quizá no gestionan. Debe devolver un 2xx con las cabeceras CORS; el código generado responde a OPTIONS con 204.
¿Es seguro permitir cualquier origen?
Para APIs públicas de solo lectura y sin cookies, * está bien. Para todo lo que use inicios de sesión o cookies, permite solo los orígenes en los que confíes: reflejar cualquier origen con credenciales permite que cualquier sitio web actúe como tus usuarios con sesión iniciada.

Herramientas relacionadas