CORS Checker
Verifica si una API acepta requests desde tu origin. Ejecuta preflight OPTIONS y un request real, muestra todas las cabeceras Access-Control-*.
¿Qué es CORS?
CORS (Cross-Origin Resource Sharing) es un mecanismo de seguridad del navegador. Por defecto, un script en https://a.com no puede leer respuestas de https://b.com. El servidor en b.com debe permitirlo enviando cabeceras Access-Control-Allow-Origin. Para requests no simples (POST con JSON, cabeceras custom, etc.), el navegador primero envía un OPTIONS "preflight" para verificar permisos — si la respuesta del servidor no permite tu origin, método o cabeceras, el request real se bloquea y ves un error CORS en DevTools.
Cabeceras CORS de respuesta explicadas
Access-Control-Allow-OriginEspecifica qué origin está permitido. Un origin específico, "*" (cualquiera), o el origin del request en eco.
Access-Control-Allow-CredentialsSi es "true", el navegador envía cookies/auth. No puede combinarse con Allow-Origin: *.
Access-Control-Allow-MethodsQué métodos HTTP permite el servidor. Solo relevante en respuesta preflight.
Access-Control-Allow-HeadersQué cabeceras de request permite el servidor. Relevante para cabeceras no simples como Authorization, X-* custom.
Access-Control-Expose-HeadersQué cabeceras de respuesta puede exponer el navegador a JavaScript. Por defecto solo una lista corta.
Access-Control-Max-AgeCuánto (segundos) el navegador puede cachear el resultado del preflight. Valores mayores evitan OPTIONS repetidos.
FAQ del CORS Checker
¿Por qué mi navegador muestra errores CORS pero esta herramienta muestra cabeceras?
CORS lo aplica el navegador, no el servidor. Esta herramienta corre en nuestro backend, así que no aplican reglas CORS — vemos la respuesta cruda. Tu navegador bloquea el request en cliente según las cabeceras Access-Control-*. Si las cabeceras aquí no coinciden con tu origin/método/cabeceras, el navegador bloqueará aunque el servidor haya respondido.
¿Qué es un request OPTIONS preflight?
Para requests cross-origin "no simples" (cualquier cosa que no sea GET/HEAD/POST simple con cabeceras básicas), el navegador envía primero un OPTIONS preguntando "¿puedo hacer este request?". El servidor responde con Access-Control-Allow-Methods, Allow-Headers y Allow-Origin. Si permiten tu request real, el navegador procede. Si no, bloquea.
¿Por qué Access-Control-Allow-Origin: * no es suficiente para mi request?
Si tu request incluye credentials (cookies, cabecera Authorization, cert cliente TLS), el navegador rechaza "*" y requiere un origin específico. El servidor debe hacer eco de tu origin exacto en Access-Control-Allow-Origin y poner Access-Control-Allow-Credentials: true.
¿CORS funciona para requests server-to-server?
No. CORS es únicamente una feature de seguridad del navegador. curl, fetch desde Node en servidor, Postman o cualquier cliente no-navegador ignoran CORS completamente. Si ves un "error CORS" desde un entorno no-navegador, el problema real está en otro lado (red, auth, URL incorrecta).
¿Cómo arreglo un error CORS?
Arréglalo en el servidor, no en el cliente. Añade el Access-Control-Allow-Origin correcto (tu origin frontend), Allow-Methods (GET/POST/etc. que uses) y Allow-Headers (cabeceras custom o de auth). Para credentials, añade Allow-Credentials: true. Asegúrate de que OPTIONS se maneje y devuelva 2xx. Las extensiones del navegador que deshabilitan CORS son un atajo de desarrollo — nunca despliegues una app real dependiendo de ellas.