Les en-têtes HTTP sont des paires clé-valeur envoyées avec chaque requête et réponse web qui transmettent métadonnées, comme le type de contenu, l'agent utilisateur, les cookies ou les règles de mise en cache, séparées du contenu réel de la page. Le W3C répertorie l'ensemble des en-têtes de requête HTTP qu'un navigateur envoie comme une source de fingerprinting passif.
L'ordre des en-têtes lui-même peut être un signal de fingerprinting : un article de Black Hat Europe 2017 sur le fingerprinting passif des clients HTTP/2 répertorie l'ordre des pseudo-en-têtes parmi ses attributs de fingerprint.
Types d'en-têtes HTTP
MDN regroupe les en-têtes par le contexte auquel ils s'appliquent :
- En-têtes de requête : Détails sur la ressource demandée ou le client qui la demande.
- En-têtes de réponse : Détails sur la réponse, tels que son emplacement ou le serveur qui la fournit.
- En-têtes de représentation : Détails sur le corps, tels que son type MIME et tout encodage ou compression.
- En-têtes de charge utile : Détails tels que la longueur du contenu et l'encodage utilisé pour le transport.
Dans HTTP/1.x, les noms des en-têtes ne sont pas sensibles à la casse, donc Accept et accept signifient la même chose.
En-têtes que les proxys ajoutent ou utilisent
Proxy-Authorization: Transporte les informations d'identification qui authentifient un client auprès d'un serveur proxy.Via: Ajouté par des proxys directs et inverses, dans les requêtes et les réponses.Forwarded: Transporte des détails côté client, tels que l'adresse IP d'origine, qui seraient autrement modifiés ou perdus lorsqu'un proxy est dans le chemin.