Anatomie d’une requête
Leçon 20 sur 47 du cours Réseautage avec le terminal de Coddy.
Sous curl, une requête HTTP est du texte brut envoyé via une socket. Elle commence par une ligne indiquant ce que vous voulez :
GET /index.html HTTP/1.1Trois éléments : la méthode (le type d’opération), le chemin (l’élément concerné) et la version. Viennent ensuite les en-têtes, un par ligne, puis une ligne vide, et enfin un corps facultatif.
La ligne vide n’est pas décorative. C’est ainsi que le serveur sait que les en-têtes sont terminés et que le corps, s’il y en a un, commence. Une requête qui n’en contient pas reste bloquée, car le serveur attend toujours de recevoir la suite.
Vous pouvez en envoyer une manuellement. nc ouvre une connexion brute et tout ce que vous lui transmettez part directement sur le réseau :
printf 'GET / HTTP/1.0\r\n\r\n' | nc 127.0.0.1 9110\r\n est la fin de ligne exigée par HTTP, et les deux séquences répétées correspondent à cette ligne vide.
Défi
DifficileIgnorez complètement curl et communiquez directement en HTTP.
- Créez
index.htmlcontenantraw - Servez le dossier sur le port 9110
- Envoyez une requête
GET /index.html HTTP/1.0brute viancet affichez uniquement la première ligne de la réponse
Cette première ligne est la ligne d’état du serveur. Sortie attendue :
HTTP/1.0 200 OKN’oubliez pas la ligne vide :
printf 'GET /index.html HTTP/1.0\r\n\r\n'.
Essayez vous-même
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Réseautage avec le terminal
1Comment les réseaux communiquent
Qu’est-ce qu’un réseauClients et serveursAdresses IPVotre première requête2Noms et DNS
Pourquoi les noms existentLe fichier hostsRechercher un nomTypes d’enregistrementsRécapitulatif : les noms5HTTP à la main
Anatomie d’une requêteMéthodes de requêteCodes d’étatEn-têtes de réponseRédiger une réponseRécapitulatif : notions de base sur HTTP3Ports et sockets
Qu’est-ce qu’un portPorts bien connusLocalhostÉcoute ou connexionRécapitulatif : les ports6curl en profondeur
Afficher les en-têtesEnregistrer les réponsesEn-têtes personnalisésStatut et duréeCodes de sortie de curlRécapitulatif : options de curl9Authentification et débogage
Clés API et BearerL’agent utilisateurDélais d’attente et nouvelles tentativesLire un échecRécapitulatif : débogageEntraînez-vous par vous-même : Playground Terminal