📡 Inspector de Cabeceras HTTP
Introduce una URL para obtener todas las cabeceras de respuesta e inspeccionar seguridad, caché, CORS y más — con explicaciones.
📖 Qué te dice este diagnóstico
El navegador lee las cabeceras de respuesta antes que una sola línea de HTML, y ellas deciden buena parte de su comportamiento. Este diagnóstico hace un GET real y lista lo que llega, destacando las cabeceras que importan para seguridad, caché y compresión. Son el ajuste que más a menudo se cree puesto sin estarlo: un CDN o un proxy inverso las reescribe por el camino, o nginx pisa lo que puso la aplicación. Compruébalo siempre contra una respuesta real.
| Elemento | Qué significa | Cómo corregirlo |
|---|---|---|
Strict-Transport-Security |
Una vez enviada, el navegador usará HTTPS para ese dominio aunque el enlace diga http://. Cierra la ventana de degradación que aprovecharía un atacante intermedio. | Envía max-age=31536000; includeSubDomains. Incluir subdominios romperá al instante cualquier subdominio sólo-HTTP, así que pásalos todos a HTTPS antes. |
X-Content-Type-Options |
Con nosniff el navegador se fía del Content-Type declarado en vez de adivinar por los bytes. Evita que un archivo subido como imagen pero que en realidad es HTML se ejecute como tal. |
Envía X-Content-Type-Options: nosniff en todas las respuestas. Apenas tiene contrapartidas y es imprescindible si sirves archivos de usuarios o una API JSON. |
Content-Security-Policy |
Declara al navegador de qué orígenes puede cargar scripts e imágenes. Es la última línea de defensa que impide que un XSS logrado se lleve datos fuera. | Aplicarla en frío romperá la página. Pásate unos días con Content-Security-Policy-Report-Only, añade a la lista los dominios legítimos que aparezcan en los informes y sólo entonces cambia a modo estricto. |
Compresión (Content-Encoding) |
Sin gzip ni br, el HTML y el JavaScript viajan sin comprimir: de tres a cinco veces más bytes, y se nota directamente en el tiempo de carga. | En nginx no basta con gzip on;: añade application/javascript y application/json a gzip_types. Por defecto sólo se comprime text/html. |
Las cabeceras pueden reescribirse en cualquier salto. Para averiguar dónde se añade o se pierde una a lo largo de app → PHP-FPM → nginx → CDN, lo más rápido es lanzar el mismo diagnóstico contra la URL de origen que evita el CDN y comparar.