Le protocole HTTP : Les Requêtes

Publié le 19 juillet 2009 par Methylbro

HTTP : Un protocole synchrone

A l'instar de beaucoup de protocoles de communication (comme l'IMAP par exemple), HTTP est un protocole synchrone. C'est-à-dire que les deux processus d'envoi de requête et de réception de la réponse s'effectuent de manière synchronisée. Chacune étant en lien avec l'autre.

Jusque là rien de bien nouveau a ce que vous avez sans doutes déjà compris auparavant. Seulement la requête n'est pas seulement constituée de l'adresse de la page que vous souhaitez récupérer. De la même façon la réponse elle contient d'autres informations que le simple fichier (généralement un document html) que le client souhaite téléchargée.

Nous allons donc commencer par voir de quoi son composer les requêtes HTTP. J'expliquerais également le concept de "méthode" au sein du protocole HTTP, et nous verrons rapidement ensemble chacune d'entre elles.

Composition d'une requête HTTP

Comme je l'ai dit précédemment, en HTTP une requête ce n'est pas composé de la simple url que vous souhaitez joindre. En effet il faut fournir au serveur HTTP d'autres paramètres afin que ce dernier puisse répondre à votre sollicitation.

Commande

Avec le protocole HTTP, trois paramètres au minimum sont à fournir afin de pouvoir constituer une requête :

  1. la méthode utilisée
  2. le nom du fichier souhaité
  3. la version du protocole employée

Ces informations doivent être disposées sur la première ligne de votre requête, séparées par un espace comme le montre le petit schéma ci-dessous :

En-tête

Vous venez de le voir sur la petite figure, une requête est aussi constituée d'autres informations. Il s'agit de ce que l'on appelle les champs de requête. C'est un ensemble d'informations facultatives que vous pouvez passer au serveur web.

C'est par exemple grâce aux informations fournies ici que le serveur web peut connaître le navigateur que vous utilisez. Nous verrons dans un autre chapitre quelles sont les informations qui sont acceptées ici.

Corps

Enfin, dernier point, il s'agit du corps de votre requête. Si vous avez déjà manipulé des données de formulaire avec du PHP et du html simple, vous vous êtes sans doutes déjà demandés comment étaient transmises les variables entre le navigateur et le serveur avec la méthode POST. Contrairement aux données circulant avec la méthode GET, ces dernières sont « invisibles » et n'apparaissent pas dans l'url.

C'est ici qu'elles sont transmises. Directement dans le corps de votre requête. Elles prennent la même forme que les variables passées dans le GET ;

variable=valeur&variable2=valeur2

Les méthodes HTTP

En HTTP, les méthodes sont en fait des sortes de commandes. Elles vous permettront de spécifier au serveur le type d'action que vous souhaitez que réalise votre requête.

Il existe cinq méthodes :

Les méthodes HTTP

Méthode Description

GET Requête de la ressource située à l'URL spécifiée

HEAD Requête de la ressource située à l'URL spécifiée (la réponse ne contient que l'entête, et pas le contenu de la ressource)

POST Envoi de données au programme situé à l'URL spécifiée (le corps de la requête peut être utilisé)

PUT Envoi de données à l'URL spécifiée (idem POST)

DELETE Suppression de la ressource située à l'URL spécifiée

Malheureusement en html les formulaires ne supportent pour le moment que les méthodes GET et POST. Il s'agit d'une restriction bien souvent regrettée que l'on pallie généralement avec des surcouches en javascript (avec ce que l'on appelle vulgairement l'AJAX).

Néanmoins l'arrivée du support des méthodes PUT et DELETE par html et un des points abordés dans le document de travail de HTML5.