Aller au contenu

Chapitre 6.3 - Protocole HTTP : Ă©tude du chargement d'une page web⚓

image

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.

image

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 serveur glassus1.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 sera 212.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.


  • 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 :
      Text Only
      HTTP/1.1 200 OK
      Date: Wed, 22 Apr 2020 08:02:01 GMT
      Server: Apache/ProXad [Jan 23 2019 19:58:42]
      Last-Modified: Sun, 12 Apr 2020 16:39:55 GMT
      ETag: "15d7c75-7c-5e93445b"
      Connection: close
      Accept-Ranges: bytes
      Content-Length: 124
      Content-Type: text/html
      
    • 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 :
      Text Only
      <!DOCTYPE html>
      <html>
      <head>
      <title>Waouh</title>
      </head>
      <body>
      Ceci est vraiment une jolie page web.
      </body>
      </html>
      

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