Composition d'un résultat HTTP
Dans le protocole HTTP on peut considérer que les réponses sont construites à peut de choses prés de la même manière que les requête. On pourra ainsi la découper à nouveau en trois parties bien distinctes.
Le code de retour
La première chose que doit indiquer le serveur au client HTTP c'est si sa commande a bien été effectuée. Il s'agit du code de retour donné en première ligne de la réponse. Cette ligne prendra la forme suivante :
HTTP/1.1 200 OK
Reprenant donc la version du protocole utilisé, le code de l'erreur ainsi que sa traduction littérale, ici une réponse favorable indiquant que tout c'est bien passé sans encombres.
Ce chapitre n'est pas destiné à faire la liste de tous les codes d'erreurs qu'il existe. Je réserve ça pour plus tard. Cependant je suis sur que vous connaissez déjà bon nombre de codes d'erreurs. Qui n'a jamais vu dans son navigateur des pages "404" indiquant que le document n'existe pas ? C'est en réalité ici que sont utilisées ces fameux codes ; en voilà l'explication.
En-tête
Les réponse HTTP contiennent elles aussi divers champs d'en-tête. Ces derniers permettent de fournir toute sorte d'informations au client.
Il peut s'agir par exemple du type de serveur HTTP qui a été utilisé pour répondre à la requête (Soit Apache dans mon petit exemple), de la date à laquelle à été générer le document que vous êtes en train de consulter (dans le cas de sites dynamiques) mais on peut y trouver également des informations très intéressante que le serveur fourni au cache de votre navigateur.
Nous verrons la liste de tous les champs possibles dans un chapitre à venir. Mais bien évidement cette liste n'est pas figée. Vous pouvez tout à fait venir rajouter des champs d'en-tête comme vous le souhaitez.
Corps
Bien évidement, le résultat d'une requête doit pouvoir contenir également le document que vous avez demandé. Je dit bien "doit pouvoir", car dans le cas d'une requête avec la méthode HEAD cela ne sera pas le cas.
Le document est donc fourni à la fin du résultat. Il peut s'agir de n'importe quel type de fichier : document html, image, fichier pdf ou que sais-je encore.