Réponse du serveur



Le serveur est une machine qui fait tourner un programme (service) qui écoute sur une adresse IP et un port, et qui répond aux demandes des clients.

La réponse commence par un ou plusieurs en-têtes, puis une ligne blanche et enfin les données de la réponse.

Observaton d'une réponse

On peut observer cette réponse dans l'inspecteur :

Réponse - parsée

ou sous sa forme brute :

HTTP/1.1 200 OK
Date: Sun, 27 Apr 2025 05:04:38 GMT
Server: Apache
Content-Location: philosophy.fr.html
Vary: negotiate,accept-language,Accept-Encoding
TCN: choice
Strict-Transport-Security: max-age=63072000
X-Frame-Options: sameorigin
X-Content-Type-Options: nosniff
Access-Control-Allow-Origin: (null)
Accept-Ranges: bytes
Cache-Control: max-age=0
Expires: Sun, 27 Apr 2025 05:04:38 GMT
Content-Encoding: gzip
Content-Length: 6940
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
Content-Language: fr

Code de statut

La première ligne indique la version du protocole utilisé (HTTP version 1.1 ici), un code (ici 200) et un état (OK)

  • Les codes 1xx indiquent une information
  • Les codes 2xx indiquent un succès
  • Les codes 3xx indiquent une redirection
  • Les codes 4xx et 5xx indiquent une erreur

Liste détaillée sur https://fr.wikipedia.org/wiki/Liste_des_codes_HTTP

Autres en-têtes

Le reste des en-tête donne des informations sur le contenu renvoyé et la manière dont il doit être traité :

  • Content-Type: type de contenu
  • Date: date et heure de la réponse
  • Content-Length: taille du contenu en octets
  • Content-Language: information sur la langue du contenu
  • ...

Modes de fonctionnement

On peut distinguer deux "modes" de fonctionnement :

  • soit le serveur renvoie le contenu de fichiers présents "physiquement" sur la machine
  • soit le serveur renvoie un contenu qu'il génère au vol, dynamiquement

Serveur de fichiers

Un serveur de fichiers va associer un chemin à un répertoire :

Exemple : sur un serveur écoutant sur le port http par défaut (80) d'une machine dont l'ip est correspond au domaine example.com, on associe le chemin /static/ est associé au répertoire /var/www/html/

Dans ce cas

  • la requête http://example.com/static/image.jpg cherche et renvoie l'image /var/www/html/image.jpg
  • la requête http://example.com/static/test/toto.txt cherche et renvoie le fichier texte /var/www/html/test/toto.txt

si un fichier n'existe pas avec le chemin correspondant, le serveur renvoie un code d'erreur 404 (Not found - Non trouvé)

Contenu dynamique

Le serveur va associer un morceau de programme (une fonction, par exemple) à un chemin ou groupe de chemins donnés, et renverra le résultat de ce programme.

Exemple : sur un serveur écoutant sur le port http par défaut (80) d'une machine dont l'ip est correspond au domaine example.com, on associe le chemin /bonjour à une fonction bonjour() qui retourne la chaîne de caractères "hello world"

  • la requête http://example.com/bonjour renverra donc "hello world"
  • la requête http://example.com/boujour renverra une erreur 404

Nous allons voir plus tard comment réaliser ces deux fonctions (serveur de fichiers, contenu dynamique) en utilisant une librairie python appelée Bottle.