Client-serveur et HTTP
Suivre une requête HTTP, distinguer calculs du navigateur et du serveur, analyser un formulaire GET ou POST et comprendre le rôle de HTTPS.
Environ 35 minutes
- Décrire l’ordre requête, traitement, réponse
- Lire les paramètres d’une URL et d’un formulaire
- Distinguer GET, POST et chiffrement
- Repérer les données mémorisées côté client
Où s’effectue le calcul quand une page répond à une recherche ?
Le navigateur peut modifier une page sans contacter un autre ordinateur, mais beaucoup d’actions demandent un échange avec un serveur. Lors d’une recherche, il prépare une requête, reçoit une réponse puis la présente. Nous allons suivre ces étapes, analyser les données d’un formulaire et distinguer la méthode HTTP de la protection du transport. Les adresses utilisant exemple.test sont des exemples réservés à l’explication ; elles ne désignent pas un service à contacter.
1. Deux rôles dans un échange
Le client demande un service ; le serveur traite la demande et renvoie une réponse. Dans le cas d’une page Web, le navigateur joue généralement le rôle de client. Le serveur peut fournir un fichier déjà disponible ou fabriquer une réponse à partir de paramètres et de calculs. Ces rôles décrivent une relation, pas une catégorie absolue de machines : un serveur peut lui-même devenir client d’un autre service. Pour analyser une action, on suit donc l’échange précis plutôt que le seul nom des ordinateurs.
HTTP fixe des règles d’échange entre un client et un serveur. Une requête comporte notamment une méthode, une cible et des en-têtes ; elle peut aussi contenir un corps. La réponse indique un code de statut, des en-têtes et éventuellement un corps. Ce corps peut être du HTML, du texte ou des données dans un autre format. Le navigateur interprète ensuite le contenu reçu. Une réponse à une requête ne signifie pas que tout le site fonctionne : il faut aussi vérifier le contenu attendu.
Lors du chargement d’une page, d’autres requêtes peuvent être nécessaires pour les feuilles de style, scripts ou images. Une action locale sur le DOM peut au contraire ne créer aucune requête. Les outils réseau du navigateur permettent d’observer ce qui est effectivement envoyé et reçu. Pour expliquer le comportement, distingue les événements de l’interface, les messages du réseau et les calculs. Ces trois aspects sont liés mais ne sont pas interchangeables.
Exemple résolu
Une page propose de multiplier un nombre saisi par deux. Le navigateur envoie 6 à un serveur ; le serveur calcule 12 et répond ; le navigateur affiche le résultat. Localise chaque opération.
- Étape 1 : La saisie de 6 et la préparation de la requête se déroulent dans le navigateur, donc côté client.
- Étape 2 : Le calcul du double est effectué par le serveur, puisque l’énoncé place explicitement cette opération après réception de la requête.
- Étape 3 : Le résultat 12 revient dans la réponse. Le navigateur lit cette donnée et met à jour l’affichage.
Résultat : L’ordre est saisie, requête, calcul sur le serveur, réponse puis affichage sur le client. Le même calcul pourrait être programmé localement, mais ce serait une autre organisation.
Piège à éviter : Attribuer tous les calculs au serveur parce que la page est sur le Web ignore les possibilités de JavaScript dans le navigateur.
2. Lire une URL et ses paramètres
Une URL peut contenir un schéma, un nom d’hôte, un chemin et une partie de requête. Dans https://exemple.test/chercher?q=climat, https annonce le mode d’accès, exemple.test désigne l’hôte, /chercher le chemin et q=climat un paramètre. Le point d’interrogation introduit la partie de requête ; le signe & peut séparer plusieurs paramètres. Le caractère # introduit un fragment, généralement utilisé par le navigateur pour viser une partie du document ; ce fragment n’est pas transmis dans la requête HTTP ordinaire.
Les noms et valeurs doivent être encodés selon les règles des URL et des formulaires. Une espace ou un caractère réservé ne s’ajoute pas au hasard dans la cible. Pour une explication simple, on peut suivre des valeurs sans caractères particuliers, puis identifier l’opération d’encodage lorsque les données en comportent. Une URL est une représentation textuelle : voir le paramètre n’indique pas encore si le serveur l’a accepté ni comment il l’a interprété.
À toi d'essayer
Dans https ://exemple.test/liste ?theme=mer&ordre=date#resultats, identifie le chemin, les deux paramètres et la partie non envoyée dans la requête HTTP.
Voir la réponseMasquer la réponse
Le chemin est /liste. Les paramètres sont theme=mer et ordre=date. Le fragment resultats, introduit par #, est utilisé côté navigateur et ne fait pas partie de la cible HTTP transmise.
3. Comprendre GET et POST
Un formulaire HTML regroupe des contrôles de saisie. L’attribut action du formulaire indique la cible ; method indique la méthode choisie. Un champ doit notamment posséder un nom, indiqué par name, pour que sa valeur soit transmise comme paramètre par le mécanisme ordinaire du formulaire. Un id peut servir à associer le champ à un libellé, mais il ne remplace pas name. Le texte visible près d’un champ ne détermine pas non plus automatiquement le nom envoyé.
Avec GET, les données d’un formulaire de recherche sont généralement encodées dans la partie de requête de l’URL. Cette méthode convient à une demande de représentation d’une ressource, telle qu’une recherche consultable et partageable. Elle ne doit pas servir à demander une modification comme la création d’une réservation. Une URL contenant une recherche peut apparaître dans l’historique, être copiée ou être enregistrée dans des journaux ; on évite d’y placer des données confidentielles.
Avec POST, les données du formulaire sont placées dans le corps de la requête, selon un format indiqué par les en-têtes. Cette méthode sert notamment à soumettre des données en vue d’un traitement. Le corps ne se voit pas directement dans la barre d’adresse, mais il reste transmis et accessible aux parties concernées. POST ne chiffre rien à lui seul. La décision GET ou POST exprime donc le sens de l’opération et la manière de transmettre les paramètres ; la confidentialité du transport relève de HTTPS.
Exemple résolu
Un formulaire utilise action="/chercher" et method="get". Il contient un champ name="q" de valeur ocean et un champ name="annee" de valeur 2026. Décris la transmission et l’interprétation attendue.
- Étape 1 : La validation rassemble les deux noms et leurs valeurs. Le navigateur construit une requête GET vers le chemin /chercher.
- Étape 2 : Une cible possible est /chercher ?q=ocean&annee=2026. L’ordre des deux paramètres n’est pas une garantie de sens ; le serveur les identifie par leur nom.
- Étape 3 : Le serveur reçoit des représentations textuelles. S’il doit comparer l’année comme un entier, il doit vérifier et convertir la valeur 2026.
Résultat : Le serveur reçoit q associé à ocean et annee associé à 2026 dans la partie de requête. Un champ sans name n’aurait pas été envoyé de cette manière.
Piège à éviter : Confondre id avec name peut produire un champ parfaitement visible mais absent des paramètres transmis.
À toi d'essayer
Un site veut créer une inscription à un atelier. Un élève propose GET parce que l’adresse obtenue sera facile à partager. Quel choix de méthode est plus adapté et pourquoi HTTPS reste-t-il nécessaire ?
Correction détaillée pas à pasDans ce chapitre : 2 corrections détaillées.
4. Mémorisation et confiance
Le navigateur peut conserver des informations dans la mémoire de la page, dans des cookies ou dans d’autres stockages locaux. Une variable JavaScript ordinaire disparaît avec le contexte de la page ; un stockage persistant peut durer au-delà. Ces mécanismes n’ont pas tous les mêmes règles de retransmission. Par exemple, certains cookies sont joints automatiquement aux requêtes auxquelles ils s’appliquent. Une valeur dans un stockage local n’est pas, à elle seule, automatiquement envoyée à chaque requête : un programme peut devoir la lire et la transmettre.
HTTP ne suppose pas que le serveur se souvienne spontanément de chaque client entre deux requêtes. Une application peut établir une continuité à l’aide de mécanismes de session. Un identifiant de session peut relier une demande à un état conservé côté serveur. L’information envoyée par le client reste une donnée reçue de l’extérieur : le serveur doit vérifier sa forme, sa validité et les droits associés. Un champ désactivé dans l’interface ou une vérification JavaScript ne suffisent pas à imposer une règle au serveur.
Exemple résolu
Une page limite une quantité à 5 dans son champ HTML. Le serveur reçoit pourtant une requête indiquant quantite=50. Doit-il accepter cette valeur puisque le navigateur était censé limiter la saisie ?
- Étape 1 : La limite de l’interface guide l’utilisateur, mais elle ne prouve pas que chaque requête provient de ce formulaire inchangé.
- Étape 2 : Le serveur vérifie que quantite est présente, convertible et située dans le domaine autorisé, ici de 1 à 5 si telle est la règle annoncée.
- Étape 3 : Il rejette la valeur 50 avec une réponse compréhensible, sans appliquer la modification demandée. Le navigateur peut ensuite afficher cette erreur.
Résultat : Le contrôle déterminant de la règle métier se fait côté serveur. Le contrôle local reste utile pour expliquer rapidement une erreur de saisie.
Piège à éviter : Faire confiance au seul attribut du formulaire confond une aide à la saisie avec la validation de toute requête reçue.
HTTPS ajoute une protection cryptographique du transport, avec TLS : les échanges sont chiffrés entre les extrémités concernées et le client peut vérifier l’identité du serveur au moyen du certificat. Cela protège contre la lecture ou la modification du trafic en transit dans les conditions prévues par le protocole. Cela ne prouve pas qu’un site est honnête ni que les données seront correctement traitées après réception. Le navigateur et le serveur ont accès aux données qu’ils envoient ou reçoivent.
À toi d'essayer
Une application transmet un message par POST sur une adresse commençant par http. Son auteur affirme que le texte est confidentiel parce qu’il n’apparaît pas dans l’URL. Repère l’erreur et propose une correction précise.
Correction détaillée pas à pasDans ce chapitre : 2 corrections détaillées.
5. Décrire une interaction complète
Au bac : analyser un formulaire et ses échanges
- Repérer action, method et les attributs name des contrôles transmis.
- Construire les paramètres sans confondre texte saisi et type attendu après conversion.
- Tracer les calculs du client, les messages et les calculs du serveur dans leur ordre réel.
- Distinguer méthode HTTP, validation des valeurs et chiffrement. Ces acquis de première restent mobilisables si la NSI est poursuivie en terminale.
Erreurs fréquentes : croire que POST chiffre ; placer un secret dans une URL ; confondre fragment et paramètre ; penser qu’un id suffit à transmettre un champ ; attribuer au serveur une validation qui n’existe que dans le navigateur. Toujours préciser qui possède quelle information à chaque étape.
Vocabulaire
- Requête :
- Message envoyé par le client pour demander une action ou une représentation.
- Réponse :
- Message du serveur comportant notamment un statut et éventuellement un contenu.
- Paramètre :
- Information nommée transmise à un traitement.
- TLS :
- Protocole cryptographique utilisé notamment pour protéger le transport HTTPS.
Bilan
| Question | Repère |
|---|---|
| GET | Consulter ; paramètres de formulaire dans l’URL. |
| POST | Soumettre des données dans le corps de la requête. |
| HTTPS | Protéger le transport HTTP par TLS. |
La rubrique S’entraîner est accessible à l’adresse /exercices. Exerce-toi à dessiner l’ordre d’un échange, puis à justifier un choix de méthode pour une recherche et pour une création.
À retenir
- Le client envoie une requête ; le serveur traite puis répond.
- Le navigateur peut effectuer des calculs localement.
- GET et POST ne sont pas des mécanismes de chiffrement.
- Les noms de champs transmis proviennent notamment de name.
- La validation côté serveur reste nécessaire même avec un contrôle local.
Fiche de révision
Lire un formulaire
cible, méthode, noms, valeurs puis type attendu.
Suivre les données
qui les conserve, qui les envoie et qui les contrôle.
Pour la confidentialité
éviter les données sensibles dans les URL et protéger le transport par HTTPS.
Et maintenant ?
Tu as lu le cours. L’étape suivante tient en une action.
Relis le coursLes exercices de ce chapitre arrivent bientôt.Prolonge l’expérience !
Continue à explorer ce chapitre à travers de nouvelles activités, des défis et des expériences interactives. Avec Premium, l’apprentissage continue !
Ici, tu débloques aussi 2 corrections détaillées.
Parent ? Suivez les progrès de votre enfant.
