Partie 3
HTTP, HTTPS et les codes de retour
HTTP (HyperText Transfer Protocol) est un protocole de communication client-serveur développé pour le World Wide Web. HTTPS est sa variante sécurisée par SSL ou TLS. SSL (Secure Sockets Layer) est devenu TLS (Transport Layer Security) en 2001.
Le client envoie une requête avec un en-tête HTTP, le serveur répond avec une réponse (en-tête compris). Une méthode HTTP est une commande qui précise le type de requête : elle demande au serveur d'effectuer une action.
GET /films HTTP/1.1 Host: api.exemple.com HTTP/1.1 200 OK Content-Type: application/json
(exemple ajouté, pour visualiser une requête puis sa réponse)
Vérifie que tu as compris
Les familles de codes
Le code de retour dit le résultat de la requête, pour permettre un traitement automatique par les clients (norme RFC 7231 citée par le cours).
| Famille | Sens |
|---|---|
| 1xx | information |
| 2xx | succès : requête traitée avec succès |
| 3xx | redirection : action supplémentaire nécessaire |
| 4xx | erreur côté client : problème dans la requête envoyée |
| 5xx | erreur côté serveur : le serveur a échoué à traiter une requête valide |
Les codes les plus utilisés
| Code | Sens |
|---|---|
| 200 | succès de la requête |
| 301 / 302 | redirection permanente / temporaire |
| 401 | utilisateur non authentifié |
| 403 | accès refusé |
| 404 | page non trouvée |
| 500 | erreur interne du serveur |
| 504 | Gateway Time-out |
Vérifie que tu as compris
Autres codes à connaître
| Code | Message | Signification (cours) |
|---|---|---|
| 201 | Created | traitée avec succès et création d'un document |
| 202 | Accepted | traitée, mais sans garantie de résultat |
| 204 | No Content | succès mais rien à renvoyer |
| 304 | Not Modified | document non modifié depuis la dernière requête |
| 307 / 308 | Temporary / Permanent Redirect | redirection temporaire / définitive sans changement de méthode |
| 400 | Bad Request | syntaxe de la requête erronée |
| 401 | Unauthorized | une authentification est nécessaire |
| 403 | Forbidden | le serveur a compris mais refuse ; s'authentifier ne change rien |
| 405 | Method Not Allowed | méthode de requête non autorisée |
| 409 | Conflict | conflit avec l'état actuel du serveur |
| 415 | Unsupported Media Type | format de requête non supporté |
| 500 | Internal Server Error | erreur interne |
| 502 | Bad Gateway | réponse invalide reçue depuis le serveur distant (proxy/passerelle) |
| 503 | Service Unavailable | indisponible temporairement ou en maintenance |
| 504 | Gateway Time-out | délai d'attente d'une réponse d'un serveur intermédiaire écoulé |
Le cours liste aussi des codes étendus Nginx : 444 (aucune réponse, connexion fermée), 495 à 497 (erreurs de certificat SSL, ou requête HTTP envoyée sur le port HTTPS), 498 (jeton expiré ou invalide) et 499 (le client a fermé la connexion avant la réponse).
401 ou 403 ?
401 : « je ne sais pas qui tu es », une authentification est nécessaire. 403 : « je sais qui tu es (en général), mais tu n'as pas les droits » : s'authentifier à nouveau ne servira à rien.
Vérifie que tu as compris