Interagir sur le Web
Cours complet · NSI (première), chapitre 10 · première, spécialité numérique et sciences informatiques
Travailler ce chapitre sur Adloun Exercices corrigés de ce chapitre
Une page Web n'est pas une image : c'est un programme qui attend. Cliquer sur un bouton, saisir un mot de passe, faire défiler une carte — chacun de ces gestes déclenche du code, ici ou ailleurs. Ce chapitre décrit ce qui se passe alors, et surtout où cela se passe : sur votre machine, ou sur celle d'en face.
Hors programme : Ce que ce chapitre ne cherche pas à faire
Le programme borne d'emblée : « il ne s'agit pas de décrire exhaustivement les différents éléments disponibles, ni de développer une expertise dans les langages qui permettent de mettre en œuvre le dialogue tels que PHP ou JavaScript ». On ne devient pas développeur Web ici. On apprend à distinguer ce qui décrit, ce qui réagit, et ce qui s'exécute de chaque côté.
10.1 Décrire, présenter, réagir
Capacité attendue
« Identifier les différents composants graphiques permettant d'interagir avec une application Web. »
Trois langages coopèrent dans une page, et le chapitre 3 a déjà dit que deux d'entre eux ne sont pas des langages de programmation :
| Langage | Rôle | Est-ce un langage de programmation ? |
|---|---|---|
| HTML | décrire la structure | non : ni boucle, ni condition |
| CSS | décrire la présentation | non |
| JavaScript | décrire le comportement | oui |
distinction que le programme demande de savoir faire.</div>
<form id="connexion" method="post" action="/verifier">
<label for="pseudo">Pseudonyme</label>
<input type="text" id="pseudo" name="pseudo">
<label for="motdepasse">Mot de passe</label>
<input type="password" id="motdepasse" name="motdepasse">
<input type="checkbox" id="memoriser" name="memoriser">
<label for="memoriser">Se souvenir de moi</label>
<button type="submit">Se connecter</button>
</form>
Les composants graphiques sont ici les champs de saisie, la case à cocher et le bouton. Chacun porte un name — le nom sous lequel sa valeur sera transmise — et souvent un id, qui permet au code de le désigner.
Rien dans ce fragment ne calcule quoi que ce soit. Il décrit : voici un formulaire, voici ses champs. C'est exactement ce que le programme demande de distinguer — « ce qui relève de la description des composants graphiques en HTML » d'une part, « leur comportement » d'autre part.
10.2 Les événements
Capacité attendue
« Identifier les événements que les fonctions associées aux différents composants graphiques sont capables de traiter. Analyser et modifier les méthodes exécutées lors d'un clic sur un bouton d'une page Web. »
Le renversement est complet par rapport à tout ce qui précède : le programme n'appelle plus, il est appelé.
Un événement est un fait survenant dans la page : un clic, une frappe au clavier, un survol, un envoi de formulaire, la fin du chargement. Un gestionnaire d'événement est une fonction que l'on associe à un composant pour qu'elle s'exécute lorsque l'événement se produit.
| Événement | Quand il survient |
|---|---|
| `click` | l'utilisateur clique sur le composant |
| `input` | le contenu d'un champ change |
| `submit` | un formulaire est envoyé |
| `keydown` | une touche est enfoncée |
| `load` | la page a fini de charger |
// Le comportement : ce que fait la page quand on clique.
const bouton = document.getElementById("compter");
const affichage = document.getElementById("total");
let compteur = 0;
bouton.addEventListener("click", function () {
compteur = compteur + 1;
affichage.textContent = compteur;
});
Ce code ne s'exécute pas de haut en bas jusqu'à une fin. Il installe une fonction, puis la page attend. Chaque clic la rappelle. C'est le style événementiel annoncé au chapitre 3 : le programme ne décide pas de l'ordre des choses, il réagit.
Notez au passage que compteur conserve sa valeur d'un clic à l'autre. Rien n'est recalculé : l'état vit dans la page, dans votre navigateur, et disparaîtra au rechargement.
10.3 Client et serveur
Capacité attendue
« Distinguer ce qui est exécuté sur le client ou sur le serveur et dans quel ordre. Distinguer ce qui est mémorisé dans le client et retransmis au serveur. »
Le client est le programme qui demande — votre navigateur. Le serveur est le programme qui répond — une machine distante, joignable par son adresse. Le dialogue suit le protocole HTTP : le client envoie une requête, le serveur renvoie une réponse.
1. Vous tapez une adresse.
2. Le navigateur demande au DNS l'adresse IP correspondant au nom.
3. Le CLIENT envoie une requete HTTP : GET /connexion HTTP/1.1
4. Le SERVEUR l'execute, puis repond : 200 OK + le code HTML
5. Le CLIENT interprete le HTML, applique le CSS,
telecharge et execute le JavaScript.
6. La page attend. Chaque clic execute du code SUR LE CLIENT.
7. A l'envoi du formulaire, le CLIENT renvoie une requete au SERVEUR,
qui l'execute a son tour.
ce qui se passe : la page vit seule, dans le navigateur.</div>
| Sur le client | Sur le serveur |
|---|---|
| afficher, masquer, animer | consulter une base de données |
| vérifier la forme d'une saisie | vérifier un mot de passe |
| calculer un total affiché | enregistrer une commande |
| réagir à un clic | décider ce que l'utilisateur a le droit de voir |
Le partage n'est pas une question de commodité, mais de confiance : tout ce qui s'exécute sur le client peut être lu, modifié ou contourné par l'utilisateur. Une vérification faite uniquement côté client est un confort, jamais une sécurité.
Vérifier en JavaScript qu'un mot de passe fait au moins huit caractères est utile : cela évite un aller-retour et prévient l'utilisateur tout de suite. Mais rien n'empêche d'envoyer la requête sans passer par la page — le serveur doit refaire la vérification.
La règle tient en une phrase : le serveur ne fait jamais confiance à ce que le client lui envoie.
10.4 Les formulaires : GET ou POST
Capacité attendue
« Analyser le fonctionnement d'un formulaire simple. Distinguer les transmissions de paramètres par les requêtes POST ou GET. »
| GET | POST | |
|---|---|---|
| Où vont les paramètres | dans l'URL, après `?` | dans le corps de la requête |
| Visibles dans la barre d'adresse | oui | non |
| Conservés dans l'historique | oui | non |
| Peut-on placer l'URL en favori | oui | non |
| Taille | limitée | non limitée en pratique |
| Usage | consulter, rechercher | envoyer, modifier, payer |
GET /recherche?ville=Nantes&jours=5 HTTP/1.1
Host: exemple.fr
POST /verifier HTTP/1.1
Host: exemple.fr
Content-Type: application/x-www-form-urlencoded
pseudo=nour&motdepasse=secret
réseau, ils circulent aussi lisiblement qu'en GET tant que la connexion n'est pas en HTTPS.</div>
Méthode : Lequel choisir ?
Le programme demande de « discuter les deux types de requêtes selon le type des valeurs à transmettre et/ou leur confidentialité » :
- la requête ne change rien et son résultat peut être partagé — une recherche, un filtre, une page de catalogue : GET. L'URL devient partageable, et c'est un avantage.
- la requête modifie quelque chose, ou transporte une valeur confidentielle — connexion, achat, publication : POST.
C'est le contresens le plus répandu du chapitre. Une requête POST cache seulement les paramètres de la barre d'adresse : ils circulent sur le réseau exactement aussi lisiblement qu'en GET.
Ce qui chiffre, c'est HTTPS — le s de l'adresse et le cadenas du navigateur. Sans lui, un mot de passe envoyé en POST traverse le réseau en clair et peut être lu par n'importe quel intermédiaire.
Capacité attendue
« Reconnaître quand et pourquoi la transmission est chiffrée. »
Il protège le contenu échangé — nul intermédiaire ne lit ni ne modifie ce qui passe — et il atteste que le serveur est bien celui qu'il prétend être, au moyen d'un certificat.
Il ne protège pas de ce que fait le site lui-même. Un site malveillant en HTTPS reste malveillant : le cadenas dit « personne d'autre n'écoute », pas « ce site est honnête ». La nuance mérite d'être sue.
10.5 Ce que le client garde en mémoire
Set-Cookie: session=8f3a91b2; Secure; HttpOnly
Un cookie est une petite donnée que le serveur demande au client de conserver et de lui retransmettre à chaque requête suivante. C'est ce qui permet à un site de vous reconnaître d'une page à l'autre, alors que HTTP, lui, ne garde aucun souvenir d'une requête à la suivante.
Le mécanisme est neutre ; ses usages ne le sont pas. Le même dispositif sert à maintenir une session ouverte — utile — et à suivre un internaute de site en site pour établir son profil publicitaire. C'est ce que le programme range parmi les compétences transversales : « faire un usage responsable et critique de l'informatique ».
Repère historique : 1989-1993 : trois inventions en une
En 1989, au CERN, Tim Berners-Lee propose un système de documents reliés entre eux pour organiser l'information des équipes de physiciens. Il en écrit les trois pièces : le langage de description HTML, le protocole de dialogue HTTP, et l'adresse universelle URL.
Le geste décisif vient en 1993 : le CERN place la technologie dans le domaine public, gratuitement et sans restriction. Le Web n'appartient à personne — c'est cette décision, autant que l'invention, qui explique ce qu'il est devenu.
Piste de projet : Une page qui réagit
Réaliser une petite application Web entièrement côté client : convertisseur d'unités, quiz, minuteur, ou le visualiseur de bases du chapitre 1. Cahier des charges minimal : au moins deux composants graphiques, deux événements différents, une vérification de la saisie, et un affichage qui se met à jour sans recharger la page.
Le compte rendu doit répondre à une question précise : qu'est-ce qui, dans votre application, devrait passer par un serveur si elle était mise en ligne pour de vrai, et pourquoi ?