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.html
a 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...