Serveur HTTP en Python
Nous allons, sur une machine de la salle, lancer un programme Python qui remplira la fonction de serveur HTTP.
Ainsi, depuis n’importe quelle machine du réseau, à partir de n’importe quel navigateur web, nous pourrons afficher une page Web. :
Les ressources (fichiers) seront stockées sur le serveur et affichées sur les postes client.
Page HTML
Ce qui sera affiché par les navigateurs des clients est codé au format HTML.
ma_page.html
avec le contenu au format HTML suivant :<html> <head> <title>Python HTTP</title> </head> <body> <h1>Python http.server</h1> <p>Bravo ! Le serveur HTTP fonctionne !</p> </body> </html>
Programme Python
Pour créer un serveur HTTP dans Python, il faut importer deux modules :
http.server
qui permet de gérer les requêtes HTTPsocketserver
qui permet de créer un serveur TCP
import http.server import socketserver
On décide du numéro de port écouté par notre serveur :
PORT = 8080
On choisit le gestionnaire (handler) pour les requêtes HTTP :
Handler = http.server.SimpleHTTPRequestHandler
On crée le serveur TCP (on utilise ici un bloc with ...
, pour faciliter sa gestion – pas besoin de le fermer) :
with socketserver.TCPServer(("", PORT), Handler) as tcp_server:
Dans le bloc with ...
, on démarre le serveur :
tcp_server.serve_forever()
- Créer un fichier Python serveur_http.py réalisant cette fonction serveur.
Attention, les deux fichiers doivent être dans le même dossier.
Communication
A l’aide du navigateur saisir dans la barre d’adresse l’URL suivant :
s62-vpi.tlpu664.etab.local:8080/ma_page.html
- Identifier dans l’URL :
- le nom du protocole
- le nom d’hôte
- le port
- la ressources
- A l’aide du logiciel Wireshark, depuis le poste client, identifier les trames HTTP échangées pour afficher la page.