Méthodes HTTP : GET vs POST
Les deux méthodes HTTP les plus couramment utilisées sont : GET et POST.
Qu'est-ce que HTTP ?
Le protocole de transfert hypertexte (HTTP) est conçu pour permettre la communication entre les clients et les serveurs.
HTTP fonctionne comme un protocole requête-réponse entre un client et un serveur.
Un navigateur web peut être le client, et une application web sur un ordinateur peut également agir comme le serveur.
Exemple : Le client (navigateur) soumet une requête HTTP au serveur ; le serveur renvoie une réponse au client. La réponse contient des informations d'état sur la requête et peut aussi contenir le contenu demandé.
Deux méthodes de requête HTTP : GET et POST
Lors d'un échange requête-réponse entre un client et un serveur, les deux méthodes les plus couramment utilisées sont : GET et POST.
- GET- Demander des données à une ressource spécifiée.
- POST- Soumettre des données à traiter à une ressource spécifiée.
Les paramètres GET sont généralement affichés dans l'URL, tandis que les données POST envoyées via un formulaire ne les affichent pas dans l'URL, ce qui rend POST plus dissimulé :

Méthode GET
Notez que la chaîne de requête (paires nom/valeur) est envoyée dans l'URL d'une requête GET :
Quelques autres remarques sur les requêtes GET :
- Les requêtes GET peuvent être mises en cache
- Les requêtes GET restent dans l'historique du navigateur
- Les requêtes GET peuvent être ajoutées aux favoris
- Les requêtes GET ne doivent pas être utilisées lors du traitement de données sensibles
- Les requêtes GET ont des restrictions de longueur
- Les requêtes GET doivent être utilisées uniquement pour récupérer des données
Méthode POST
Notez que la chaîne de requête (paires nom/valeur) est envoyée dans le corps du message HTTP d'une requête POST :
Host: example.com
name1=value1&name2=value2
Quelques autres remarques sur les requêtes POST :
- Les requêtes POST ne sont jamais mises en cache
- Les requêtes POST ne restent pas dans l'historique du navigateur
- POST ne peut pas être mis en favori
- Les requêtes POST n'ont aucune restriction sur la longueur des données
Comparer GET vs POST
Le tableau suivant compare les deux méthodes HTTP : GET et POST.
| GET | POST | |
|---|---|---|
| Bouton Retour/Actualiser | Inoffensif | Les données seront à nouveau soumises (le navigateur doit informer l'utilisateur que les données seront à nouveau soumises). |
| Bookmark | Peut être mis en favori | Ne peut pas être ajouté aux signets |
| Cache | Peut être mis en cache | Ne peut pas être mis en cache |
| Type d'encodage | application/x-www-form-urlencoded | application/x-www-form-urlencoded ou multipart/form-data. Utilisez l'encodage multipart pour les données binaires. |
| Historique | Les paramètres restent dans l'historique du navigateur. | Les paramètres ne sont pas enregistrés dans l'historique du navigateur. |
| Restrictions sur la longueur des données | Oui, il existe une limite. Lors de l'envoi de données, la méthode GET ajoute les données à l'URL ; la longueur de l'URL est limitée (la longueur maximale de l'URL est de 2048 caractères). | Aucune limite. |
| Restrictions sur les types de données | Seuls les caractères ASCII sont autorisés. | Aucune restriction. Les données binaires sont également autorisées. |
| Sécurité | Comparé à POST, GET est moins sécurisé car les données envoyées font partie de l'URL. N'utilisez jamais GET pour envoyer des mots de passe ou d'autres informations sensibles ! |
POST est plus sécurisé que GET car les paramètres ne sont pas enregistrés dans l'historique du navigateur ni dans les journaux du serveur web. |
| Visibilité | Les données sont visibles par tout le monde dans l'URL. | Les données ne sont pas affichées dans l'URL. |
Autres méthodes de requête HTTP
Le tableau suivant répertorie quelques autres méthodes de requête HTTP :
| Méthode | Description |
|---|---|
| HEAD | Identique à GET, mais renvoie uniquement les en-têtes HTTP, pas le corps du document. |
| PUT | Téléverse une représentation de l'URI spécifiée. |
| DELETE | Supprime la ressource spécifiée. |
| OPTIONS | Renvoie les méthodes HTTP prises en charge par le serveur. |
| CONNECT | Convertit la connexion de requête en un tunnel TCP/IP transparent. |