L'en- host
tête indique au serveur Web l' hôte virtuel à utiliser (s'il est configuré). Vous pouvez même avoir le même hôte virtuel en utilisant plusieurs alias (= domaines et wildcard-domaines). Dans ce cas, vous avez toujours la possibilité de lire cet en-tête manuellement dans votre application Web si vous souhaitez fournir un comportement différent en fonction des différents domaines adressés. Ceci est possible car dans votre serveur Web, vous pouvez (et si je ne me trompe pas, vous devez) configurer un hôte virtuel comme hôte par défaut. Ce vhost par défaut est utilisé chaque fois que l'en- host
tête ne correspond à aucun des hôtes virtuels configurés.
Cela signifie: vous avez raison, bien que dire "plusieurs hôtes" puisse être quelque peu trompeur: l'hôte (la machine adressée) est le même, ce qui est vraiment résolu en adresse IP, ce sont différents noms de domaine (y compris les sous-domaines) qui sont également référencés en tant que noms d' hôte (mais pas d'hôtes!).
Bien que ne faisant pas partie de la question, un fait amusant: cette spécification a conduit à des problèmes avec SSL dans les premiers jours car le serveur Web doit fournir le certificat qui correspond au domaine adressé par le client. Cependant, pour savoir quel certificat utiliser, le serveur Web doit avoir connu à l'avance le nom d'hôte adressé. Mais comme le client envoie ces informations uniquement sur le canal crypté (ce qui signifie: une fois que le certificat a déjà été envoyé), le serveur a dû supposer que vous naviguiez sur l'hôte par défaut. Cela signifiait un domaine sécurisé par SSL par adresse IP / combinaison de ports.
Cela a été surmonté avec l' indication du nom du serveur ; cependant, cela brise à nouveau une certaine confidentialité, car le nom du serveur est à nouveau transféré en texte brut, de sorte que chaque homme du milieu verra à quel nom d' hôte vous essayez de vous connecter.
Bien que le serveur Web connaisse le nom d'hôte à partir de l'indication du nom du serveur, l'en- host
tête n'est pas obsolète, car les informations d'indication du nom du serveur ne sont utilisées que dans l'établissement de liaison TLS. Avec une connexion non sécurisée, il n'y a aucune indication du nom du serveur, donc l'en- host
tête est toujours valide (et nécessaire).
Autre fait amusant: la plupart des serveurs Web (sinon tous) rejettent votre requête http si elle ne contient pas exactement un en- host
tête, même si elle pourrait être omise car il n'y a que le vhost par défaut configuré. Cela signifie que les informations minimales requises dans une requête http- (get-) sont la première ligne contenant METHOD
RESOURCE
et PROTOCOL VERSION
et au moins l'en- host
tête, comme ceci:
GET /someresource.html HTTP/1.1
Host: www.example.com
Dans la documentation MDN sur l'en-tête d'hôte, ils l'expriment comme suit:
Un champ d'en-tête Host doit être envoyé dans tous les messages de requête HTTP / 1.1. Un code d'état 400 (Bad Request) sera envoyé à tout message de requête HTTP / 1.1 qui n'a pas de champ d'en-tête Host ou en contient plusieurs.
Comme mentionné par Darrel Miller, les spécifications complètes peuvent être trouvées dans la RFC7230 .
vhost
seulement 3 occurrences proches devirtual host
avec un sens pas proche de votre phrase et 12 pourdefault
principalement sur le port,