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.
Page HTML
Créer un fichier 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 HTTP
- socketserver 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.