Si je fais une requête GET via netcat sans spécifier la version http - GET /
, j'obtiens une réponse du serveur sans qu'il m'attende à envoyer d'abord les en-têtes et une ligne vide. Mais si la version est là - GET/HTTP/0.1
, il se comporte normalement, même si c'est 0.1
. Je l'ai testé sur google.com
, apache.org
et microsoft.com
. Est-ce défini par le protocole?Pourquoi les serveurs n'attendent pas les en-têtes http si la version http n'est pas spécifiée dans une requête GET?
1
A
Répondre
2
Cette forme de requête (GET /
sans version) a été utilisée par une version antérieure du protocole HTTP, connue sous le nom de HTTP/0.9, qui ne prenait pas en charge les en-têtes. Voir The Original HTTP as defined in 1991.
spécifications ultérieures pour HTTP 1.0 (RFC 1945) et HTTP 1.1 (RFC 2616) nécessitent HTTP 1.0+ implémentations de reconnaître HTTP 0.9 demandes et réponses (RFC 7230 pour HTTP 1.1 plus tard abandonné cette exigence).
RFC 1945: États
La version d'un message HTTP est indiqué par un champ HTTP-Version dans la première ligne du message. Si la version de protocole n'est pas spécifiée, le destinataire doit supposer que le message est au format HTTP/0.9 simple.