Cours Protocole HTTP GET et POST en PDF (Intermédiaire)
Protocole HTTP, méthodes GET et POST : Ce qu'il faut savoir. HTTP (Hyper Text Transfer Protocol) est le protocole applicatif de la couche 7 du modèle OSI (couche « application ») qui structure les échanges entre navigateurs (clients) et serveurs web sous l'architecture TCP/IP. Une transaction HTTP combine une ligne de requête (méthode, URL, version), des en‑têtes et éventuellement un corps. La maîtrise des méthodes GET et POST, ainsi que de la syntaxe des requêtes/réponses et des en‑têtes (Host, User-Agent, Content-Type, Content-Length), est essentielle pour diagnostiquer des problèmes réseau, concevoir des formulaires web et écrire des scripts côté serveur. Le support est fourni au format PDF pour consulter les exemples pratiques et les TP fournis. La spécification HTTP est formalisée dans les RFC (voir notamment RFC 7230 et RFC 7231 pour HTTP/1.1, qui ont remplacent l'ancienne RFC 2616) et décrit la syntaxe des requêtes, des en‑têtes et des mécanismes de connexion.
Le modèle OSI et la couche Application
HTTP fonctionne à la couche Application (couche 7 du modèle OSI) et s'appuie sur la couche Transport (généralement TCP) pour la fiabilité du transport des octets, et sur la couche Réseau (IP) pour l'acheminement. Comprendre cette séparation permet d'isoler les problèmes : latence et perte au niveau IP/TCP versus erreurs de protocole ou d'en‑têtes au niveau Application.
🎯 Ce que vous allez apprendre
- Format d'une requête et d'une réponse HTTP — identifier et construire les lignes de requête (
METHOD URL HTTP/x.y) et les blocs d'en‑têtes qui suivent, lire un code de statut (200, 404, etc.) et interpréter les champsContent-TypeetContent-Length. Cette compétence permet d'analyser les échanges avec un outil bas‑niveau (telnet) et de diagnostiquer pourquoi un navigateur n'affiche pas une ressource. - Différences pratiques entre GET, POST et HEAD — transformation des paramètres (query string vs corps de la requête), contraintes de taille et de visibilité, et implications en matière d'idempotence et de cache. Choisir la méthode appropriée pour un formulaire ou une API REST basique et anticiper les comportements des caches et proxies.
- Gestion de l'état HTTP : cookies et champs cachés — mécanismes de persistance entre requêtes : cookies et champs
INPUT type="hidden". À l'issue, implémenter une propagation d'identifiants de session ou de variables d'application entre pages sans recourir à une base externe. - Versions HTTP et persistance de connexion — distinctions entre HTTP/1.0 (connexion fermée après réponse) et HTTP/1.1 (connexions persistantes par défaut via l'en‑tête
Connection), et conséquences sur la latence et la charge serveur. Savoir interpréter quand une connexion reste ouverte et comment cela affecte le débit de requêtes simultanées. - Programmation CGI et récupération des données de formulaire — pratique de la programmation côté serveur via CGI avec exemples PHP inclus dans le document, récupération de variables envoyées par GET et POST (ex:
$_GET['score']), et décodage d'URL encodée. Écrire un script CGI simple qui litQUERY_STRINGou lesvariables d'environnementpour produire une réponse HTML dynamique. - Analyse et diagnostic réseau des échanges web — exploitation d'exemples concrets fournis (séquences telnet, réponses d'Apache) pour analyser les en‑têtes
Host,Accept,User-Agentet repérer des erreurs 404/500. Reproduire et corriger des erreurs côté client ou serveur lors d'un transfert de données.
| Caractéristique | GET | POST |
|---|---|---|
| Visibilité | Paramètres dans l'URL (query string) — visibles dans l'historique et les logs | Données dans le corps de la requête — non visibles dans l'URL mais présentes dans le payload |
| Taille des données | Limitée par la longueur d'URL (pratique et implémentation‑dépendant) | Plus grande capacité (limite déterminée par le serveur et l'en‑tête Content-Length) |
| Idempotence | Idempotent et safe (lecture seule attendue) | Généralement non‑idempotent (modifications d'état possibles) |
| Mise en cache | Par défaut cachable par les navigateurs et proxies (sauf en‑têtes contraires) | Généralement non caché par défaut (sauf configuration explicite) |
Codes de statut HTTP (200, 404, 500)
Les codes de statut informent le client sur le résultat d'une requête HTTP : 200 indique une réponse réussie, 404 qu'une ressource est introuvable, et 500 signale une erreur interne côté serveur. Comprendre ces codes et les en‑têtes de réponse associés facilite le diagnostic, notamment lors d'analyses de logs sur un serveur Apache ou lors d'inspections réseau pour identifier des anomalies de transfert de données.
Sécurité : GET vs POST
GET expose les paramètres dans l'URL (query string), visible dans l'historique et les logs, ce qui le rend inadapté aux données sensibles. POST place les données dans le corps avec un Content-Type approprié ; il réduit l'exposition dans l'URL mais ne chiffre pas le contenu. L'utilisation de HTTPS est nécessaire pour garantir la confidentialité et l'intégrité des échanges. La notion d'idempotence est importante : une requête idempotente (comme GET) peut être répétée sans effet supplémentaire côté serveur, alors que POST n'est généralement pas idempotent car il peut provoquer des modifications d'état.
Ce support de cours est disponible en téléchargement immédiat pour un apprentissage hors-ligne.
📑 Sommaire du document
- Plan du cours
- Quelques rappels
- Qu’est‑ce que le web ?
- Format d’une URL
- Le protocole HTTP
- Format des requêtes/réponses
- HTTP est un protocole sans état
- La programmation CGI
💡 Pourquoi choisir ce cours ?
Support conçu pour la Licence 1 Math‑Info par Olivier Glück (Université Lyon 1), combinant descriptions protocolaires et exemples opérationnels (telnet, extraits PHP, formulaires). L'approche pédagogique alterne démonstrations réseau et mini‑TP, facilitant la transition entre théorie (RFC, modèles client‑serveur) et pratique (débogage d'en‑têtes, scripts CGI). Le document contient des extraits de sessions réelles et des recommandations sur les en‑têtes, le mode sans‑état et l'encodage des données de formulaire.
👤 À qui s'adresse ce cours ?
- Public cible : étudiants en informatique (L1/L2), développeurs web en formation et administrateurs systèmes débutants qui doivent comprendre les échanges HTTP, concevoir des formulaires et dépanner des interactions client/serveur.
- Prérequis : notions de HTML (structure de pages et formulaires), bases du modèle TCP/IP et du fonctionnement client/serveur, et familiarité minimale avec un langage de script côté serveur.
❓ Foire Aux Questions (FAQ)
Comment HTTP conserve‑t‑il des informations entre deux requêtes indépendantes ?
HTTP étant sans état, la persistance s'obtient via des mécanismes externes : cookies (envoi par l'en‑tête Set-Cookie et renvoi via Cookie), champs cachés dans les formulaires (INPUT type="hidden"), ou identifiants stockés côté serveur. Ces méthodes permettent de lier plusieurs requêtes indépendantes en une session logique sans modifier le protocole lui‑même.
En quoi GET diffère-t-il de POST pour l'envoi de données de formulaire ?
GET transmet les paramètres dans la query string (visible dans l'URL) et est limité en taille par l'URL, tandis que POST met les données dans le corps avec un en‑tête Content-Type approprié (ex: application/x-www-form-urlencoded). Cela influence la confidentialité, la taille des données et le comportement en matière d'idempotence et de cache.
Exemple PHP : récupération de variables côté serveur
<?php
// Récupération d'une variable 'score' envoyée par GET
$score = isset($_GET['score']) ? $_GET['score'] : null;
// Récupération d'un champ 'name' envoyé par POST
$name = isset($_POST['name']) ? $_POST['name'] : '';
?>
Télécharger le cours : Maîtriser les requêtes HTTP
Le document PDF est conçu pour un apprentissage autonome et contient tous les extraits pratiques nécessaires (séquences telnet, exemples PHP, captures d'échanges). Téléchargeable pour une consultation hors‑ligne, il permet de suivre les TP à son rythme, reproduire des scénarios de diagnostic réseau et réutiliser les extraits de code pour des tests sur un serveur local ou distant.
Exercices pratiques sur les méthodes GET et POST
La rubrique exercices propose des cas concrets : construction manuelle d'une requête HTTP via telnet, envoi de formulaires avec différents Content-Type, analyse d'en‑têtes sur un serveur Apache et simulation de sessions via cookies et variables d'environnement. Chaque exercice inclut des objectifs, étapes de validation et solutions commentées pour renforcer la compréhension et l'autonomie en diagnostic.