Le protocole HTTP: Les champs d'une requête HTTP


La première ligne d'une requête peut être suivi d'un certain nombre de champs permettant de donner quelques renseignements sur le client (souvent un navigateur) et son utilisateur (généralement vous). Il existe de nombreux champs, et seuls les plus utilisés ou les plus utiles pour la programmation de petits clients seront expliqués; la rfc du protocole vous permettra de voir toutes les possibilités offertes.

Nom du champDescription
Accept Type de contenu accepté par le navigateur (par exemple text/html, ce sont les codes MIME).
Content-Length Longueur du corps de la requête
Content-Type Type de contenu du corps de la requête (par exemple text/html).
Date Date de début de transfert des données
Forwarded Utilisé par les proxys entre le navigateur et le serveur
From Permet de spécifier l'adresse e-mail du client
Referer URL du lien à partir duquel la requête a été effectuée
If-Modified-Since Dernière date de réception du contenu de la ressource
Host Nom du serveur/domaine de destination
User-Agent Chaîne donnant des informations sur le client, comme le nom et la version du navigateur, du système d'exploitation


Le champ Accept est important car vous pouvez indiquer la liste des formats de données que vous souhaitez recevoir. Les codes suivant sont particulièrement intéressants : image/gif, image/jpeg, image/png. En l'absence de ce champ, le serveur n'enverra pas de fichier d'image, ils sont donc indispensables pour écrire un outil d'aspiration d'images sur le web.

Le Champ Content-Length est particulièrement utile pour les requêtes POST (en effet, la valeur de ce champ est toujours nulle pour les requêtes GET) car certains serveurs refusent de traiter la requête en l'absence de ce champ.

Pour l'écriture d'un outils de synchronisation entre un site web et une autre source de données, utilisez le champ If-Modified-Since, suivi de la dernière date de synchronisation, il indique au serveur de n'envoyer le contenu de la ressource que si il a changé depuis cette date.

Le champ Host indique le nom du domaine destination de la requête. Il est fréquent qu'un serveur web soit en charge de plusieurs sites web de noms de domaines différents, ce champ permet de faire la distinction. Ce champ est obligatoire avec la version HTTP/1.1.

Les auteurs de sites web n'apprécient guère l'usage des aspirateurs (tel que wget) car ils permettent la consultation hors ligne de leur site et empêche l'affichage de bannières publicitaires. Une technique classique consiste à vérifier le Referer d'une requête avant de répondre. Le Referer indique l'url de la ressource précédemment consultée (dans le cas d'un navigateur, c'est l'url de la page qui contenait le lien sur lequel vous venez de cliquer). La plupart des outils utilisant HTTP servent à récupérer de façon automatique des données (ou des ensembles de fichiers) sur le web, il est donc parfois important de renseigner ce champ pour donner l'impression qu'un vrai utilisateur est derrière son navigateur.

Pour les mêmes raisons que précédemment, il est toujours plus intéressant pour un utilitaire de récupération de fichiers sur Internet de se faire passer pour un navigateur ordinaire. Le champ User-Agent permet de vous faire passer pour le dernier navigateur à la mode, celui que tous les sites web acceptent (le navigateur Opera utilise cette technique).