Le protocole HTTP : Les Réponses
Par Méthylbro le mardi 21 juillet 2009, 08:00 - Tutoriels - Lien permanent
Vendredi dernier, je me suis lancé dans la rédaction d'une nouvelle série d'articles dédiés au protocole HTTP. Après avoir commencé dimanche à parler des requêtes et de tous les éléments qui les composent ; nous allons avoir aujourd'hui comment sont construites les réponses HTTP.
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.
Commentaires
Voilà des connaissances de bases indispensables, merci Methylbro pour ce partage. On lit tjs ça avec plaisir !
Sans chercher à dénigrer cette série d'articles, car la connaissance est toujours intéressante, je me pose la question de l'intérêt de connaître précisément ce protocole.
Le précédent article annonçait : « [...] la maîtrise de ce protocole est essentielle pour appréhender par la suite bon nombre de problématiques. Qu'il s'agisse de sécurité, de sessions, d'AJAX ou d'architectures relativement complexe de type MVC et etc. [...] »
Mes connaissances actuelles m'empêchent de voir distinctement le lien entre la maîtrise du protocole et les différents sujets cités.
Un article suivant apportera-t-il ce genre de réponses ?
@BW HadèS : Non, ce genre d'article n'est pas prévu. L'article final de cette série traitera de la conception d'un petit client HTTP directement écrit en PHP.
Cependant détrompe toi, la connaissance et la maitrise des protocoles de base - et notamment d'HTTP - est un élément essentiel pour mieux maitriser l'environnement dans lequel tu te situe. Le temps et l'expérience te démontrerons que ce n'est pas vain d'essayer au moins de comprendre les rudiments d'HTTP. Il s'agit de connaissances essentielles pour mieux appréhender des concepts plus complexes.
Dans tous les cas, pour ma part cela m'a fait le plus grand bien de rédiger cette petite série de billets. Je me suis aperçu que je ne maitriser pas HTTP aussi bien que je ne le pensais.
@Méthylbro : merci pour ta réponse, mais je reste sur ma faim. « [...] la connaissance et la maitrise des protocoles de base - et notamment d'HTTP - est un élément essentiel pour mieux maitriser l'environnement dans lequel tu te situe. » D'accord, mais en quoi ? De part ma formation et mon expérience dans le domaine (petit Bac+3 en dév Web [d'il y a 5 ans] et un peu de dév. perso), je connais un peu le protocole HTTP (principe des codes retour, en-tête, corps, etc.), mais rarement ai-je eu l'impression d'en avoir besoin, si ce n'est pour tenter d'expliquer à certains le principe AJAX.
En lisant tes articles, j'avais cru avoir un peu plus d'explication sur l'utilité concrète de connaître ce protocole.