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 :

/test/demo_form.php?name1=value1&name2=value2

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 :

POST /test/demo_form.php HTTP/1.1
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.
Autres extensions