Chapitre 6 : Le Protocole HTTP - Travaux Pratiques
TP 1 : Exploration avec les DevTools
Objectifs
- Analyser les requêtes/réponses HTTP
- Comprendre les headers
- Observer les codes de statut
Étapes
1.1 Ouvrir les DevTools
- Ouvrez Chrome ou Firefox
- Appuyez sur F12 ou Ctrl+Shift+I
- Allez dans l'onglet Network (Réseau)
1.2 Observer une requête simple
- Cochez "Preserve log" pour garder l'historique
- Naviguez vers
https://httpbin.org/get
- Cliquez sur la requête dans la liste
Questions :
- Quel est le code de statut ?
- Quels headers de requête sont envoyés ?
- Quel est le Content-Type de la réponse ?
1.3 Tester différentes méthodes
Utilisez l'onglet Console pour envoyer des requêtes :
1.4 Observer les codes de statut
Testez ces URLs et notez les codes :
https://httpbin.org/status/200
https://httpbin.org/status/404
https://httpbin.org/status/500
https://httpbin.org/redirect/3
Exercice
Remplissez le tableau :
| URL |
Méthode |
Code |
Content-Type |
| httpbin.org/get |
|
|
|
| httpbin.org/post |
|
|
|
| httpbin.org/status/201 |
|
|
|
TP 2 : Maîtrise de cURL
Objectifs
- Utiliser cURL en ligne de commande
- Comprendre les options principales
- Envoyer différents types de requêtes
Prérequis
- Terminal (Linux/macOS) ou Git Bash (Windows)
- cURL installé (
curl --version)
Exercices
2.1 Requête GET simple
Question : Quelle est la différence entre -i et -v ?
2.2 Requête POST avec données
2.3 Headers personnalisés
2.4 Suivre les redirections
2.5 Télécharger un fichier
Exercice avancé
Écrivez une commande cURL qui :
- Envoie une requête POST à
https://httpbin.org/post
- Avec le header
Content-Type: application/json
- Avec le header
X-Custom-Header: MonHeader
- Avec le body
{"action": "test", "value": 42}
- Affiche les headers de réponse
TP 3 : API REST avec JavaScript
Objectifs
- Utiliser l'API Fetch
- Gérer les promesses et async/await
- Traiter les erreurs HTTP
Étapes
3.1 GET basique
3.2 POST - Créer une ressource
3.3 PUT - Modifier une ressource
3.4 DELETE - Supprimer une ressource
Exercice pratique
Créez une fonction fetchWithRetry(url, options, maxRetries) qui :
- Effectue une requête HTTP
- En cas d'erreur 5xx, réessaie jusqu'à
maxRetries fois
- Attend 1 seconde entre chaque tentative
- Retourne la réponse ou lève une erreur
TP 4 : Analyse des Headers de Sécurité
Objectifs
- Comprendre les headers de sécurité
- Analyser la configuration d'un site
- Identifier les améliorations possibles
Étapes
4.1 Vérifier les headers d'un site
4.2 Analyser avec Security Headers
- Allez sur https://securityheaders.com
- Entrez l'URL d'un site (ex: github.com)
- Analysez le rapport
Headers à vérifier
| Header |
But |
Valeur recommandée |
Strict-Transport-Security |
Forcer HTTPS |
max-age=31536000; includeSubDomains |
X-Frame-Options |
Anti-clickjacking |
DENY ou SAMEORIGIN |
X-Content-Type-Options |
Anti-MIME sniffing |
nosniff |
Content-Security-Policy |
Sources autorisées |
default-src 'self' |
Referrer-Policy |
Contrôle du referrer |
strict-origin-when-cross-origin |
Exercice
Analysez 3 sites de votre choix et remplissez le tableau :
| Site |
HSTS |
X-Frame |
CSP |
Note |
| github.com |
|
|
|
|
| google.com |
|
|
|
|
| (votre choix) |
|
|
|
|
TP 5 : Cache HTTP
Objectifs
- Comprendre le fonctionnement du cache
- Observer les headers de cache
- Tester la validation avec ETag
Étapes
5.1 Observer le cache
5.2 Requête conditionnelle
5.3 Simulation de cache dans le navigateur
- Ouvrez DevTools > Network
- Chargez une page avec des images
- Rechargez (F5) et observez "(from cache)"
- Rechargez avec Ctrl+Shift+R (ignorer le cache)
Exercice
Créez une page HTML avec :
- Une image
- Un fichier CSS
- Un fichier JS
Configurez les headers de cache appropriés pour chaque type de fichier.
Exercices Récapitulatifs
Exercice 1 : Client HTTP minimaliste
Créez un script JavaScript qui :
- Affiche un formulaire avec URL, méthode, body
- Envoie la requête
- Affiche le statut, headers et corps de la réponse
Exercice 2 : Questions théoriques
- Quelle est la différence entre
no-cache et no-store ?
- Pourquoi POST n'est-il pas idempotent ?
- Que se passe-t-il si le serveur renvoie un code 301 ?
- À quoi sert le header
Origin ?
- Pourquoi utiliser
HttpOnly sur les cookies de session ?