Chapitre 6.3 - Protocole HTTP : Ă©tude du chargement d'une page webâïž

Le protocole HTTP : des requĂȘtes et des rĂ©ponsesâïž
HTTP (HyperText Transfer Protocol) est le protocole qui régit la communication entre :
- le client (la machine de l'utilisateur qui souhaite obtenir une page web). On dit que le client effectue une requĂȘte.
- le serveur (la machine sur laquelle sont stockés les fichiers nécessaires à l'affichage de cette page web). Le serveur va renvoyer une réponse.

DĂ©roulĂ© d'une requĂȘteâïž
Prenons pour exemple la requĂȘte d'un navigateur vers la page http://glassus1.free.fr/interesting.html
- le navigateur analyse l'url : la demande concerne la page
interesting.html, stockée sur le serveurglassus1.free.fr. - une demande est préalablement effectuée auprÚs pour obtenir l'adresse IP du serveur
glassus1.free.fr(qui est en fait un sous-domaine du serveur des pages personnelles de l'opĂ©rateur Free). Ici, l'adresse IP sera212.27.63.111(on la retrouvera dans la capture de la fenĂȘtre d'Outils de devĂ©loppement). - la requĂȘte est effectuĂ©e sur le port 80 de l'adresse
212.27.63.111. - la réponse est envoyée au navigateur, qui en extrait la charge utile et procÚde à l'affichage de la page.
Analyse Ă l'aide d'un navigateurâïž
Observons Ă partir de l'Inspecteur d'Ă©lĂ©ment d'un navigateur (ici Firefox) les informations qui transitent lors de la requĂȘte et de la rĂ©ponse.

- Point 1 : La requĂȘte de type GET vers l'url
http://glassus1.free.fr/interesting.htmla gĂ©nĂ©rĂ© un code de rĂ©ponse 200 OK, ce qui signifie que la requĂȘte a Ă©tĂ© traitĂ©e et que la rĂ©ponse contenant la page a Ă©tĂ© envoyĂ©e.
Vous pouvez trouver Ă l'adresse https://developer.mozilla.org/fr/docs/Web/HTTP/Status la totalitĂ© des codes de rĂ©ponse possibles. Citons par exemple :- 304 Not Modified : la page n'a pas eu besoin d'ĂȘtre renvoyĂ©e, elle indique au navigateur d'aller la rechercher dans son cache. On peut obtenir ce code de rĂ©ponse en actualisant la page actuelle
http://glassus1.free.fr/interesting.fr(qui est une page ultra-basique, et n'évolue pas). Pour ré-obtenir un code 200, il faut faire un hard-refresh en appuyant sur Maj pendant l'actualisation. - 403 Forbidden : le client n'a pas le droit d'accÚs à la page.
- 404 Not Found : la page demandée est introuvable
- 500 Internal Server Error : le serveur a rencontré une erreur qu'il ne sait pas traiter.
- 304 Not Modified : la page n'a pas eu besoin d'ĂȘtre renvoyĂ©e, elle indique au navigateur d'aller la rechercher dans son cache. On peut obtenir ce code de rĂ©ponse en actualisant la page actuelle
- Point 2 : en observant la taille totale des données transférées (388 octets), on peut comprendre que la réponse faite par le serveur est constituée :
- d'un En-tĂȘte (264 octets) qui contient :
- du corps de la RĂ©ponse (dont on sait d'aprĂšs l'en-tĂȘte qu'il pĂšse 124 octets). Ce corps de la rĂ©ponse est la charge utile de la rĂ©ponse. Elle contient ici le code html de la page :
Remarque : on peut observer que le navigateur a aussi effectuĂ© (de sa propre initiative) une requĂȘte vers un fichier favicon.ico qui est l'icone de la page web dans les onglets du navigateur ou la barre de favoris. Ce fichier Ă©tait bien prĂ©sent sur le serveur (ce n'est pas toujours le cas), il a donc Ă©tĂ© envoyĂ© dans la rĂ©ponse du serveur.
De maniĂšre gĂ©nĂ©rale, une requĂȘte vers un site web moins Ă©lĂ©mentaire va occasionner une multitude de rĂ©ponses.
Par exemple, l'appel au site www.lyceemauriac.fr gĂ©nĂšre 129 requĂȘtes/rĂ©ponses diffĂ©rentes, composĂ©es de fichiers html, css, js, de fichiers de fontes woff2, d'images jpg, png...
