Protocole HTTP
Objectifs de la séance
À la fin de cette séance, vous saurez :
- Expliquer ce qu'est une URL, une URI
- Observer et analyser les échanges HTTP entre un navigateur et un serveur
- Identifier les composants d'une requête et d'une réponse HTTP
- Utiliser les outils de développement du navigateur
- Réaliser des requêtes HTTP en ligne de commande (avec
curlouhttpie) - Différencier les méthodes GET et POST
- Comprendre les principes du cache et des requêtes conditionnelles
Introduction
Le protocole HTTP (Hypertext Transfer Protocol) est le langage utilisé par votre navigateur pour dialoguer avec les serveurs Web. Chaque fois que vous consultez une page, remplissez un formulaire ou cliquez sur un lien, vous utilisez HTTP sans le savoir.
HTTP est un protocole client-serveur de la couche application du modèle OSI. Il repose sur un échange de requêtes envoyées par le client (le navigateur) et de réponses fournies par le serveurs Web.
Ce TP vous guide pas à pas dans l'exploration du protocole HTTP à travers des outils pratiques, pour en comprendre les rouages essentiels avant d'attaquer le développement Web.
HTTP permet de récupérer des ressources (pages HTML, images, etc.) à partir d'un identifiant d'adresse (URL), en respectant une syntaxe et un dialogue standardisé entre client et serveur.
I. Premiers échanges avec un site Web
A. La barre d'adresse
- Tapez dans la barre d'adresse de votre navigateur :
http://httpbin.org/
- Que se passe-t-il ?
- Quelle URL s’affiche réellement ? Pourquoi ?
- Essayez avec :
http://httpbin.org/html
- Quelle différence constatez-vous ?
- Affichez et observez le code HTML reçu.
💡 httpbin.org est un site conçu pour tester les requêtes HTTP. Il vous renvoie des réponses lisibles et instructives.
B. Les outils de développement
- Ouvrez les outils de développement de votre navigateur (
F12ou clic droit → Inspecter → onglet Réseau). Rechargez la page précédente.
Répondez aux questions suivantes :
- Méthode HTTP utilisée ?
- URL demandée ?
- Version du protocole HTTP ?
- Code de retour (ex :
200 OK) ? - Informations contenues dans :
- les en-têtes de la requête (Request Headers)
- les en-têtes de la réponse (Response Headers)
- Contenu de la réponse
- Refaites l’opération avec :
http://httpbin.org/encoding/utf8
C. Ressource inexistante
- Accédez à une URL volontairement erronée :
http://httpbin.org/toto
- Que se passe-t-il ?
- Quel est le code de retour HTTP ? Que signifie-t-il ?
🧠 Rappel : Les codes HTTP sont standardisés. Par exemple,
404 Not Found,301 Moved Permanently,403 Forbidden, etc.
D. Requêtes conditionnelles (et cache)
- Accédez à :
http://httpbin.org/cache
- Quelle est la valeur de l’en-tête
Cache-Control? - Rechargez plusieurs fois : constatez-vous un comportement particulier ?
- Dans l’onglet Réseau, observez s’il apparaît un champ
If-Modified-SinceouIf-None-Matchlors du rechargement.
Si non : clic droit sur la requête → "Rejouer avec modification".
- Différences par rapport à la première requête ?
- Code de réponse (
304 Not Modified?) : que signifie-t-il ?
📦 Ces mécanismes permettent de ne pas recharger inutilement une ressource si elle n’a pas changé, ce qui accélère la navigation.
E. Méthodes GET vs POST
- Accédez au formulaire :
http://httpbin.org/forms/post
- Remplissez-le puis validez.
- Observez la requête dans l’onglet Réseau :
- Méthode HTTP ?
- Où sont passées les données ?
- Refaites avec :
http://httpbin.org/get?nom=Dupont&prenom=Jean
- Comparez l’URL et les données envoyées avec la requête POST précédente.
🆚 GET ajoute les données dans l’URL (visible), POST les place dans le corps de la requête (invisible, mais plus sécurisé pour les formulaires sensibles).
II. Requêtes HTTP en ligne de commande
A. Avec curl
- Tapez dans un terminal :
curl http://httpbin.org/get
- Quelle est la méthode utilisée ?
- Que contient la réponse ?
- Avec paramètres dans l’URL :
curl http://httpbin.org/get?nom=Dupont&prenom=Jean
- Requête POST :
curl -X POST -d "nom=Dupont&prenom=Jean" http://httpbin.org/post
- Observez les différences avec la requête GET précédente.
- Pour voir les en-têtes échangés :
curl -v http://httpbin.org/get
- Pour envoyer un en-tête personnalisé :
curl -H "X-Test: Coucou" http://httpbin.org/headers
B. Option : avec httpie
Si vous avez installé httpie, testez :
http httpbin.org/get
http POST httpbin.org/post nom=Durand prenom=Alice
✅
httpieest plus lisible quecurl, notamment pour les réponses JSON.
III. Étude de cas réel
- Trouvez un site Web avec un formulaire de connexion simple (évitez les sites sensibles).
- Entrez des données fictives et observez l’échange réseau.
- Analysez :
- Méthode utilisée
- Données envoyées
- En-têtes présents
- URL ciblée
- Réponse du serveur
Conclusion
Vous devez maintenant être capable de :
- Identifier et analyser une requête HTTP dans le navigateur
- Différencier les méthodes GET et POST
- Lire et interpréter les codes de statut et les en-têtes HTTP
- Construire des requêtes HTTP en ligne de commande
- Comprendre les échanges client-serveur sous-jacents au Web
Conservez vos observations et scripts dans un dépôt Git. Cela vous servira pour vos projets Web (PHP, JS) et pour vos révisions.