Quelles sont les informations obligatoires qu'un en-tête de requête HTTP doit contenir?

Réponses:

36

GET / HTTP/1.0 est une requête HTTP légale.

S'il n'y a pas de Hostchamp d'en-tête, vous n'obtiendrez peut-être pas les résultats que vous espériez si le serveur de destination est un hôte virtuel qui n'a pas sa propre adresse IP pour se distinguer des autres hôtes virtuels.

HTTP 1.1 nécessite le Hostchamp.

gbroiles
la source
1
J'ai fait un peu de recherche moi-même et vous avez raison @gbroiles. Pour l'hébergement virtuel basé sur un nom, un navigateur avec HTTP 1.1 est généralement requis. Les navigateurs envoient le nom d'hôte dans l'en-tête d'hôte et le serveur Web sert des hôtes virtuels basés sur le nom s'ils sont configurés. Avec les anciens navigateurs et HTTP 1.0, c'est quelque peu possible, mais vous avez besoin d'une solution de contournement comme la directive ServerPath d'Apache. Heureusement, les navigateurs plus récents implémentent des extensions lors de l'utilisation de HTTP 1.0 pour garantir l'envoi du champ d'en-tête de l'hôte. w3.org/Protocols/rfc2616/rfc2616-sec14.html
Stephan Kristyn
1
Existe-t-il encore des navigateurs qui utilisent réellement HTTP 1.0?
Pacerier
De nombreux agents utilisateurs utilisent HTTP 1.0. Les utilisateurs de navigateurs Web utiliseront HTTP 1.1 ou 2.0 dans la mesure du possible, mais ils peuvent y accéder via un proxy qui ne prend en charge que HTTP 1.0. Les robots ou les robots peuvent utiliser HTTP 1.0. Les clients simples aiment wgetutiliser HTTP 1.0. Notez qu'il n'y a aucun effort côté serveur requis pour prendre en charge les clients HTTP 1.0, car un serveur compatible HTTP 1.1 prendra en charge les clients HTTP 1.0 (HTTP 1.1 est conçu pour être une amélioration progressive par-dessus HTTP 1.0; fonctionnalités non compatibles telles que les blocs encodage et keep-alive par défaut à off pour les requêtes HTTP 1.0).
thomasrutter
3

Aucun des en-têtes HTTP n'est requis dans une demande. Aucun en-tête de réponse n'est requis non plus.

Tout cela et plus encore dans HTTP 1.1 - RFC 2616

Chris S
la source
15
Vous vous trompez. Selon le RFC que vous avez lié ici: "Un client DOIT inclure un champ d'en-tête Host dans tous les messages de requête HTTP / 1.1". L'en- Hosttête est donc obligatoire.
user219882
2
Correct, mais il n'est pas nécessaire qu'un client utilise HTTP / 1.1 en premier lieu.
Chris S
2
Content-Length ou Transfer-Encoding ne sont obligatoires que si une entité est livrée avec la demande ou la réponse, et dans de nombreux cas, une demande ou une réponse n'aura pas d'entité (comme une demande GET ou une réponse 302).
Brandon Rhodes
6
Je ne peux pas downvote mais cette réponse est fausse. Veuillez corriger ou supprimer.
vikingsteve
4
Je suis d'accord avec vikingsteve. Votre réponse implique que HTTP 1.1 n'a pas d'en-tête requis.
nullstellensatz