2017-08-04 6 views
1

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?

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.