Ce matériel fait partie de la série « Introduction au développement d'entreprise ». Articles précédents :
Bonjour! Aujourd'hui, nous comprendrons les protocoles HTTP et HTTPS. Mais d'abord, clarifions un point : nous parlons de protocoles de transfert de données sur le réseau au niveau de la couche application du modèle OSI. Comme vous vous en souvenez, nous avons discuté du modèle OSI dans l'un des articles précédents. Et si vous ne vous en souvenez pas, le voici .
Il convient de noter d’emblée que le protocole HTTP se compose uniquement de texte. Eh bien, ce qui nous intéresse le plus, c'est la structure dans laquelle se trouve ce texte. Chaque message se compose de trois parties :
Qu'est-ce qu'un protocole de transfert de données
C'est le nom donné à l'accord généralement accepté, grâce auquel les développeurs de différents services envoient des informations sous une forme unique. Par exemple, en utilisant Google Chrome, vous pouvez obtenir des informations à la fois de Facebook et de Twitter, car les développeurs les transmettent via le protocole HTTP standard et votre navigateur peut les traiter. Les règles uniformes sont également très pratiques pour les développeurs côté serveur eux-mêmes : il existe de nombreuses bibliothèques qui peuvent convertir les informations pour vous et les envoyer en utilisant le protocole requis. HTTP a été initialement conçu comme un protocole de transfert de pages HTML. Cela a été le cas pendant longtemps, mais aujourd'hui, les programmeurs transfèrent souvent à la fois des chaînes et des fichiers multimédias. Dans l’ensemble, ce protocole est polyvalent et flexible, et il est très simple à utiliser. Voyons maintenant comment procéder.
Structure HTTP
Il convient de noter d’emblée que le protocole HTTP se compose uniquement de texte. Eh bien, ce qui nous intéresse le plus, c'est la structure dans laquelle se trouve ce texte. Chaque message se compose de trois parties :
- Ligne de départ : définit les données de service.
- En-têtes - description des paramètres du message.
- Corps du message (Corps) - données du message. Doit être séparé des titres par une ligne vide.
À quoi ressemble une simple requête HTTP
GET / HTTP/1.1
Host: javarush.com
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
La ligne de départ contient :
- GET - méthode de requête ;
- / — chemin de requête (chemin) ;
- HTTP/1.1 - version du protocole de transfert de données.
- Hôte — l'hôte auquel la demande est adressée ;
- User-Agent est le client qui envoie la demande.
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: javarush.com
{
"Id": 12345,
"User": "John"
}
La requête est envoyée à javarush.com/user/create/json, la version du protocole est HTTP/1.1. Accept spécifie le format de réponse que le client s'attend à recevoir, Content-Type spécifie le format dans lequel le corps du message est envoyé. Content-Length - le nombre de caractères dans le corps. Une requête HTTP peut contenir de nombreux en-têtes différents. Plus de détails peuvent être trouvés dans la spécification du protocole .
Réponses HTTP
Après avoir reçu la requête, le serveur la traite et envoie une réponse au client :HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 98
<html>
<head>
<title>An Example Page</title>
</head>
<body>
<p>Hello World</p>
</body>
</html>
La ligne de départ de la réponse contient la version du protocole (HTTP/1.1), le code d'état (200) et la description de l'état (OK). Les titres indiquent le type et la longueur du contenu. Le corps de la réponse contient le code HTML que le navigateur dessinera dans la page HTML.
Codes d'état de réponse
Tout est clair avec le corps du message et les en-têtes, mais cela vaut la peine de dire quelques mots sur les codes d'état. Les codes d'état de réponse sont toujours composés de trois chiffres et le premier chiffre du code indique la catégorie de la réponse :- 1xx - informatif. La requête a été reçue, le serveur est prêt à continuer ;
- 2xx - réussi. La demande a été reçue, comprise et traitée ;
- 3xx - redirection. Les étapes suivantes doivent être effectuées pour traiter la demande ;
- 4xx - erreur client. La demande contient des erreurs ou n'est pas conforme au protocole ;
- 5xx - erreur de serveur. Le serveur n'a pas pu traiter la demande, bien qu'elle ait été rédigée correctement ;
- 200 OK — la demande a été reçue et traitée avec succès ;
- 201 Créé — la demande a été reçue et traitée avec succès, entraînant la création d'une nouvelle ressource ou de son instance ;
- 301 Déplacé de façon permanente - la ressource demandée a été déplacée de façon permanente et les demandes ultérieures doivent être effectuées à la nouvelle adresse ;
- 307 Redirection temporaire - la ressource a été déplacée temporairement. Pour l'instant, vous pouvez y accéder via la redirection automatique ;
- 403 Interdit - la demande est claire, mais une autorisation est requise ;
- 404 Not Found - le serveur n'a pas trouvé la ressource à cette adresse ;
- 501 Non implémenté : le serveur ne prend pas en charge la fonctionnalité permettant de répondre à cette demande ;
- 505 Version HTTP non prise en charge - le serveur ne prend pas en charge la version spécifiée du protocole HTTP.
GO TO FULL VERSION