Para cualquier sitio web, es importante configurar correctamente las cabeceras HTTP. Se han escrito muchos artículos sobre este tema. Aquí hemos resumido la experiencia acumulada y la documentación RFC. Algunas de las cabeceras son obligatorias, otras están obsoletas, y algunas pueden generar confusión y contradicciones. Creamos una herramienta para . A diferencia de muchos otros servicios que simplemente muestran las cabeceras, este servicio permite:
- especificar el valor de las cabeceras estándar;
- agregar cabeceras personalizadas;
- indicar la versión del protocolo HTTP: 1.0, 1.1, 2 (verifica si se soporta HTTP/2);
- indicar el método de solicitud, el tiempo de espera y los datos postdata para enviar al servidor;
- también la herramienta verifica la validez de las respuestas a las solicitudes If-Modified-Since, If-None-Match, si en la respuesta del servidor hay Last-Modified o ETag.
No pretendemos tener la verdad absoluta. Para contenido específico y proyectos individuales, puede haber excepciones. Pero este servicio definitivamente te indicará en qué puntos es necesario prestar atención, quizás te sea útil editar tus cabeceras. A continuación, la lista de lo que verifica el servicio de comprobación. Por qué, puedes leer .
Cabeceras obligatorias
- Date
- Content-Type con la indicación de charset para contenido texto, preferiblemente utf-8
- Content-Encoding, compresión para el contenido texto
Cabeceras obsoletas y no necesarias
- Server con la versión detallada del servidor web
- X-Power-By
- X_ASPNET-Version
- Expires
- Pragma
- P3P
- Via
- X-UA-Compatible
Cabeceras deseables para la seguridad
- X-Content-Type-Options
- X-XSS-Protection
- Strict-Transport-Security
- Referrer-Policy
- Feature-Policy
- Content-Security-Policy o Content-Security-Policy-Report-Only para prohibir scripts y estilos incrustados.
Cabeceras para caché
Son obligatorias para contenido estático con largo tiempo de caché y muy deseables para contenido dinámico con corto tiempo de caché.
- Last-Modified
- ETag
- Cache-Control
- Vary
- Es importante que el servidor responda correctamente a las cabeceras: If-Modified-Since y If-None-Match
HTTP/2
Ahora el servidor debe soportar HTTP/2. Por defecto, el servicio verifica la funcionalidad del servidor a través de HTTP/2. Si tu servidor no soporta HTTP/2, elige HTTP/1.1.
Fuente: habr.com
