Comprendre les bases du HTTP

En savoir plus

Qu'est-ce que HTTP ?

http-iconHTTP est l'acronyme de "hypertext transfer protocol" et est utilisé pour transférer des données sur le Web.

 

Il s'agit d'un protocole essentiel à la compréhension des développeurs web et, en raison de son utilisation généralisée, il est également utilisé pour le transfert de données et de commandes dans les applications de l'ITO.

La première version du protocole n'avait qu'une seule méthode, à savoir GET, qui demandait une page à un serveur.

La réponse du serveur était toujours une page HTML.

 

Pour vous donner une idée de la simplicité du protocole HTTP au départ, jetez un coup d'œil à la spécification originale qui n'était qu'une page.

 

Il y a eu plusieurs versions de HTTP à partir de la version originale 0.9.

 

La version actuelle est la 1.1 et a été révisée pour la dernière fois en 2014.

 

Comment ça marche

 

Comme la plupart des protocoles Internet http, il s'agit d'un protocole de commande et de réponse en mode texte utilisant un modèle de communication client-serveur.

 

Bases du protocole HTTP

 

Le client fait une demande et le serveur y répond.

 

Le protocole HTTP est également un protocole sans état, ce qui signifie que le serveur n'est pas tenu de stocker les informations de session, et que chaque requête est indépendante de l'autre.

 

Cela signifie que :

 

Toutes les demandes proviennent du client ( votre navigateur )

Le serveur répond à une demande.

 

Les requêtes (commandes) et les réponses sont en texte lisible.

 

Les demandes sont indépendantes les unes des autres et le serveur n'a pas besoin de suivre les demandes.

 

Structure des demandes et des réponses

 

Les structures des messages de demande et de réponse sont les mêmes et sont présentées ci-dessous :

 

http-request-response-structure

 

Une demande consiste en :

Une commande ou une demande + des en-têtes optionnels + un contenu de corps optionnel.

 

Une réponse consiste en :

 

Un code de statut + des en-têtes optionnels + un contenu facultatif.

 

Une simple combinaison CRLF (retour chariot et saut de ligne) est utilisée pour délimiter les parties, et une simple ligne blanche (CRLF ) indique la fin des en-têtes.

Si la demande ou la réponse contient un corps de message, celui-ci est indiqué dans l'en-tête.

 

La présence d'un corps de message dans une demande est signalée par un champ d'en-tête Content-Length ou Transfer-Encoding. Le cadrage du message de demande est indépendant de la sémantique de la méthode, même si celle-ci ne définit aucune utilisation d'un corps de message. - RFC 7230, section 3.3.

 

Demandes HTTP

 

Nous avons vu plus tôt le format général de réponse à la demande, nous allons maintenant couvrir le message de demande plus en détail.


La ligne de départ est obligatoire et est structurée comme suit :

Méthode + chemin des ressources + version du protocole

 

Exemple si nous essayons d'accéder à la page web testpage.htm sur www.testsite5.com

 

La ligne de départ de la demande serait

 

GET /test.htm HTTP/1.1

 

L'EEG est la méthode

 

/testpage.htm est le chemin relatif vers la ressource.

 

HTTP/1.1 est la version du protocole que nous utilisons

 

Notes :

 

Un chemin relatif n'inclut pas le nom de domaine.

 

Le navigateur web utilise l'URL que nous entrons pour créer l'URI relatif de la ressource.

 

Note : L'URL (uniform resource Locator) est utilisé pour les pages web. C'est un exemple d'URI (uniform resource indicator).

 

La requête http réelle n'est pas affichée par le navigateur, et n'est visible qu'à l'aide d'outils spéciaux comme l'en-tête http en direct (Firefox).

 

HTTP vs URL

 

La plupart des gens savent comment entrer une url dans un navigateur web. Elle ressemble généralement à ceci.

 

exemple d'url-1

 

L'url peut également inclure le port qui est normalement caché par le navigateur, mais vous pouvez l'inclure manuellement comme indiqué ci-dessous :

url-exemple-with-port

 

Il indique au navigateur web l'adresse de la ressource à localiser et le protocole à utiliser pour récupérer cette ressource (http).

 

http est le protocole de transfert qui permet de transférer la ressource (page web, image, vidéo, etc.) du serveur au client.

 

Réponses HTTP et codes de réponse

 

Chaque demande a une réponse. La réponse consiste en un Code et description du statut 1 ou plusieurs en-têtes optionnels

 

Le corps du message peut comporter de nombreuses lignes, y compris des données binaires

 

Les codes de statut de réponse sont divisés en 5 groupes ; chaque groupe a une signification et un code à trois chiffres.

 

1xx - Informatif

2xx - Réussir

3xx - Choix multiple

4xx- Erreur du client

5xx - Erreur de serveur

Par exemple, une demande de page réussie renvoie un code de réponse 200 et une demande non réussie un code de réponse 400.

 

Exemple de réponse à une demande

 

Nous allons examiner les demandes et les réponses lorsque nous accédons à une simple page web

 

Voici ce que je saisis dans la barre d'adresse du navigateur :

 

navigateur-demande

 

et c'est la réponse que le navigateur affiche :

 

réponse du navigateur

 

et voici une capture d'écran de la demande-réponse http qui se passe en coulisses.

 

Exemple de demande-réponse HTTP

 

Remarquez que les en-têtes de demande sont automatiquement insérés par le navigateur, tout comme les en-têtes de réponse sont insérés par le serveur web.

 

Types de demandes

 

Jusqu'à présent, nous n'avons pas mentionné les types de demande, mais nous avons vu le type de demande GET dans nos exemples.

 

Le type ou la méthode de requête GET est utilisé pour demander une ressource à un serveur web.

 

GET est le type de requête le plus couramment utilisé et était le seul type de requête dans la spécification HTTP originale.

Types de requête, méthodes ou verbes

 

Le protocole HTTP prend désormais en charge 8 types de requêtes, également appelés méthodes ou verbes dans la documentation, ce sont

 

GET - Requête de ressource à partir du serveur

POST - soumission d'une ressource à un serveur (par exemple, téléchargement de fichiers)

PUT - comme POST mais remplace une ressource

DELETE - Supprimer une ressource d'un serveur

HEAD - Comme GET mais ne renvoie que les en-têtes et non le contenu

OPTIONS - Obtenir les options pour la ressource

PATCH - Apporter des modifications à une ressource

TRACE - Effectue une boucle de messages

Sur Internet, les méthodes GET (obtenir des pages web) et POST (soumettre des formulaires web) sont aujourd'hui les plus utilisées.

 

Les autres méthodes sont utilisées lorsque l'on travaille avec les API Web et IOT : put, delete et head.