Première · Interactions sur le Web

Formulaires Web : comprendre GET et POST

Un formulaire transforme des saisies en paramètres transmis. Son fonctionnement repose sur des noms de champs, une destination et une méthode. Comprendre ce trajet permet d’expliquer pourquoi une valeur apparaît dans l’adresse, pourquoi une autre manque et ce que HTTPS protège réellement.

SofienAvec SofienIngénieur et enseignant en informatique
Dans ce chapitre

Un cap pour ce chapitre

Ce que vous saurez faire

  • Analyser les champs et les paramètres d’un formulaire
  • Distinguer les transmissions GET et POST
  • Relier méthode HTTP confidentialité et validation
Les bases utiles pour commencer

Des champs nommés deviennent des paramètres

Un formulaire possède notamment une destination, indiquée par action, et une méthode, indiquée par method. Un champ doit avoir un nom pour participer normalement à l’envoi des valeurs correspondantes. L’étiquette visible aide l’utilisateur, mais ce n’est pas elle qui détermine le nom du paramètre transmis. Un champ name = "ville" contenant Lyon produit ainsi une association ville=Lyon. Certains contrôles ont des règles particulières : une case à cocher non cochée n’envoie généralement pas son paramètre. Pour analyser le résultat, il faut donc examiner la structure du formulaire et son état au moment de la soumission.

Voici un formulaire pédagogique complet pour analyser une soumission. La destination /recherche représente un service d’exemple ; le code décrit la demande, mais sa réponse doit être programmée sur le serveur concerné.

<form action="/recherche" method="get">
  <label for="notion">Notion recherchée</label>
  <input id="notion" name="notion" value="arbre" required>
  <label for="niveau">Niveau</label>
  <select id="niveau" name="niveau">
    <option value="premiere">Première</option>
    <option value="terminale">Terminale</option>
  </select>
  <button type="submit">Rechercher</button>
</form>

L’identifiant relie un champ à son étiquette ou à un script ; le nom sert de clé dans les données envoyées. Ces attributs peuvent avoir la même valeur par commodité, mais ils ne jouent pas le même rôle. Un nom manquant peut donc laisser un champ visible sans paramètre transmis.

GET place les paramètres dans la cible de la requête

Un formulaire GET encode les paramètres dans la partie de requête de l’URL, après le point d’interrogation. Une recherche peut produire /recherche?notion=graphe&niveau=terminale. Cette adresse peut être copiée, partagée ou ajoutée à un favori pour retrouver le même résultat, si le site respecte ce fonctionnement. GET est destiné à demander une représentation sans provoquer une modification applicative attendue. Une suppression de données ne devrait donc pas être déclenchée simplement par l’ouverture d’un lien GET. Cette distinction concerne le sens de la demande, pas seulement l’emplacement du texte.

Les caractères spéciaux doivent être encodés pour ne pas être confondus avec les séparateurs de l’URL. Un espace peut notamment apparaître sous une forme encodée. Cette transformation rend le message transportable ; elle n’est pas un chiffrement et permet de retrouver les caractères d’origine.

POST transmet habituellement les paramètres dans le corps

Un formulaire POST envoie ses données dans le corps de la requête selon l’encodage choisi, au lieu de les ajouter à l’URL de la même manière. Il convient notamment aux soumissions que le serveur doit traiter et qui peuvent modifier son état. POST ne signifie pas « chiffré » : sans HTTPS, le contenu peut circuler sans la protection cryptographique attendue. Même avec HTTPS, le serveur reçoit les données lisibles. L’URL plus courte ne prouve donc pas à elle seule que l’application ne conserve rien ni que les informations sont accessibles uniquement à l’utilisateur.

Un corps de requête reste observable par le serveur destinataire et par les outils du navigateur. Le choisir peut répondre au sens de l’action et au format des données. La confidentialité du transport dépend séparément du canal HTTPS.

Valider aux bons endroits et vérifier la réponse

Les contrôles du navigateur, comme required ou un type de champ, améliorent la saisie. Ils ne dispensent pas le serveur de vérifier les valeurs, car une demande peut être construite en dehors de la page. Le serveur doit ensuite répondre de manière compréhensible : succès, erreur de champ, absence de ressource ou autre situation. Dans une analyse, suivez une valeur depuis le champ jusqu’au paramètre reçu, puis jusqu’à son utilisation. N’envoyez jamais de mots de passe ou d’informations sensibles dans une URL partageable ; choisissez aussi une collecte proportionnée au besoin réel.

Le serveur doit prévoir les paramètres absents, répétés ou invalides selon le contrat du service. Un formulaire donné produit une forme habituelle de demande, mais il ne limite pas toutes les demandes possibles. Les décisions essentielles doivent donc être vérifiées lors de leur réception.

Suivre une valeur avec un espace et un accent

Une recherche sur « arbre binaire » en GET produit une association dont le nom est notion et la valeur le texte complet. L’espace doit être représenté dans l’URL sans devenir un séparateur de paramètres. Dans le modèle de l’atelier, il apparaît sous la forme %20. Pour « réseau », les octets UTF-8 de l’accent sont également encodés.

Le serveur décode ensuite ces représentations pour retrouver la valeur recherchée. Cette opération est réversible et ne protège pas un secret. Il faut distinguer encodage des caractères, emplacement du paramètre et chiffrement de la communication : ces mécanismes répondent à des besoins différents.

Choisir la méthode selon l’intention de l’action

Une recherche de chapitre convient à GET : la demande peut être répétée ou conservée comme favori pour retrouver la même représentation. Une soumission destinée à enregistrer une inscription correspond à un traitement qui peut modifier l’état du serveur et utilise habituellement POST.

Le serveur doit néanmoins programmer ce sens correctement. Changer seulement l’attribut du formulaire ne crée ni validation ni enregistrement dans une base. Pour analyser un exercice, identifiez le but de la requête, les paramètres présents, leur emplacement et la réponse attendue. Une méthode indique une convention d’échange, pas l’intégralité du fonctionnement de l’application.

À vous de faire varier les choses

Suivez la soumission du formulaire

Choisissez la méthode, le contenu et le canal. Aucun envoi réel n’a lieu ; l’atelier reconstitue une requête pédagogique.

Lire le résultat de l’expérience initiale

GET /recherche?notion=arbre%20binaire&corriges=oui

Les paramètres apparaissent dans l’URL, qui peut être conservée ou partagée. HTTPS protège le transport, et le serveur reçoit les valeurs.

ÉlémentValeur
MéthodeGET
Cible/recherche?notion=arbre%20binaire&corriges=oui
CorpsVide
Paramètre corrigesoui

Le formulaire, la méthode et le canal déterminent des aspects différents de l’échange. Suivre les champs évite les raccourcis sur la confidentialité.

De la compréhension à l’autonomie

À vous de résoudre

Cherchez d’abord par vous-même. Vérifiez les résultats demandés, utilisez les indices si nécessaire, puis comparez votre méthode à la correction.

Exercice 1 · S’entraîner#

Lire une recherche

Un formulaire GET vers /recherche contient notion = arbre et niveau = premiere. Écrivez une URL possible et indiquez ce qui permet de partager la recherche.

Indice 1

Les paramètres suivent un point d’interrogation.

Indice 2

Deux associations sont séparées par une esperluette.

Comprendre la correction

Une URL possible est /recherche?notion=arbre&niveau=premiere. Les valeurs font partie de l’adresse, ce qui permet de la copier pour demander le même résultat. Leur ordre peut varier sans modifier le sens si le serveur identifie correctement les noms. Le comportement final dépend du traitement prévu par l’application.

Exercice 2 · S’entraîner#

Un nom manquant

Un champ affiche « Prénom » et contient Lina, mais ne possède pas d’attribut name. Pourquoi la valeur peut-elle manquer lors d’une soumission HTML ordinaire ?

Indice 1

L’étiquette et le nom transmis n’ont pas le même rôle.

Indice 2

Le serveur reçoit des associations nom-valeur.

Comprendre la correction

L’étiquette décrit le champ pour l’utilisateur, mais l’attribut name fournit la clé du paramètre envoyé. Sans ce nom, le champ ne participe pas normalement à la soumission de ses données. Il faut ajouter un nom cohérent, comme prenom, et conserver une étiquette correctement associée pour l’accessibilité.

Exercice 3 · S’entraîner#

POST n’est pas un chiffrement

Un élève choisit POST sur une adresse HTTP et affirme que les données sont protégées parce qu’elles ne sont plus visibles dans l’URL. Expliquez l’erreur.

Indice 1

L’emplacement d’une donnée et la protection du transport sont deux propriétés différentes.

Indice 2

HTTPS fournit le canal chiffré, pas la méthode POST.

Comprendre la correction

POST place généralement les données dans le corps, mais HTTP sans TLS ne leur apporte pas le chiffrement de HTTPS. Elles peuvent donc être observables pendant le transport selon le réseau. Il faut utiliser HTTPS et traiter correctement les données côté serveur. L’absence dans l’URL ne constitue pas une garantie de confidentialité.

Exercice 4 · S’entraîner#

Une case non cochée

Un formulaire contient une case name = "lettre" value="oui". Comparez l’envoi lorsqu’elle est cochée puis lorsqu’elle ne l’est pas. Que doit prévoir le serveur ?

Indice 1

Une case non cochée est normalement absente des paramètres.

Indice 2

L’absence doit être interprétée explicitement.

Comprendre la correction

Lorsqu’elle est cochée, le paramètre lettre=oui est envoyé. Lorsqu’elle ne l’est pas, aucun paramètre lettre n’est normalement transmis. Le serveur doit donc prévoir ce cas, par exemple comme une absence de demande d’inscription. Il ne doit pas supposer que tous les noms de champs arrivent toujours avec une valeur vide ou fausse.

Exercice 5 · Approfondir et relier#

Trois noms à ne pas confondre

Un champ affiche l’étiquette « Votre ville », possède l’identifiant ville_formulaire, le nom destination et contient Lyon. Quel nom-valeur est transmis ? Quel attribut le label doit-il référencer ? Expliquez ce qui change si le nom est supprimé.

Indice 1

L’étiquette n’est pas la clé de transmission.

Indice 2

Le label vise l’identifiant du champ.

Comprendre la correction

La soumission transmet destination=Lyon. Le label doit référencer ville_formulaire pour être associé au champ. Si le nom manque, ce champ ne participe pas normalement à l’envoi HTML ordinaire, même s’il reste visible et correctement étiqueté. Les rôles de présentation, d’association et de transmission sont distincts.

Exercice 6 · Approfondir et relier#

Une recherche et une option absente

Un formulaire GET vers /recherche contient notion égale à arbre et une case corriges=oui non cochée. Donnez les paramètres envoyés, puis expliquez le changement si elle est cochée. Le serveur doit-il attendre une valeur faux quand elle est décochée ?

Indice 1

Une case non cochée est normalement omise.

Indice 2

L’absence doit avoir une interprétation prévue.

Comprendre la correction

Sans coche, seule l’association notion=arbre est envoyée. Avec coche, on ajoute corriges=oui. Le serveur ne doit pas supposer que le paramètre arrive avec la valeur faux : il est absent dans la première situation. Il peut interpréter cette absence comme une recherche sans l’option, conformément au contrat.

Exercice 7 · Approfondir et relier#

Séparer trois propriétés de l’envoi

Une soumission POST utilise HTTPS et envoie un texte contenant un espace encodé. Distinguez le rôle de POST, de HTTPS et de l’encodage. Le serveur peut-il lire le texte ? Changer POST en GET supprimerait-il le chiffrement si HTTPS reste utilisé ?

Indice 1

La méthode, le canal et la représentation sont trois choix indépendants.

Indice 2

Le destinataire doit retrouver les données pour les traiter.

Comprendre la correction

POST place ici les paramètres dans le corps. HTTPS protège la communication pendant le transport. L’encodage représente les caractères dans le format du message. Le serveur retrouve le texte lisible. Passer à GET déplace les paramètres dans l’URL du modèle, sans supprimer à lui seul la protection HTTPS du transport.

Les erreurs qui méritent un détour

Confondre le label avec le nom du paramètre
Le label renseigne l’utilisateur ; name détermine la clé envoyée par le formulaire.
Présenter POST comme une protection cryptographique
GET et POST organisent la demande ; HTTPS protège le transport dans les deux cas.

La fiche à garder

L’essentiel à retenir

  • Un formulaire transmet des paramètres nommés.
  • GET facilite les demandes partageables dans une URL.
  • POST et HTTPS répondent à des questions différentes.

Le prochain pas

Retrouver le catalogue de Première

Ce chapitre s’appuie sur le programme officiel de Première (PDF, nouvel onglet). Les explications et exercices sont proposés pour l’apprentissage.