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 :

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.jpgcherche et renvoie l'image/var/www/html/image.jpg - la requête
http://example.com/static/test/toto.txtcherche 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/bonjourrenverra donc "hello world" - la requête
http://example.com/boujourrenverra 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.