MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

La méthode HTTP POST envoie des données au serveur. Le type du corps de la requête est indiqué par l'en-tête Content-Type.

La différence entre PUT et POST tient au fait que PUT est une méthode idempotente. Une requête PUT, envoyée une ou plusieurs fois avec succès, aura toujours le même effet (il n'y a pas d'effet de bord). À l'inverse, des requêtes POST successives et identiques peuvent avoir des effets additionnels, ce qui peut revenir par exemple à passer plusieurs fois une commande.

Une requête POST est habituellement envoyée via un formulaire HTML et a pour résultat un changement sur le serveur. Dans ce cas, le type du contenu est sélectionné en mettant la chaîne de caractères adéquate dans l'attribut enctype de l'élément <form> ou dans l'attribut formenctype de l'élément <input>, voire celui des éléments <button> :

  • application/x-www-form-urlencoded : les valeurs sont encodées sous forme de couples clé-valeur séparés par '&', avec un '=' entre la clé et la valeur. Les caractères non alphanumériques sont percent encoded : c'est la raison pour laquelle ce type de format n'est pas adapté à une utilisation avec des données binaires  (utilisez application/form-data à la place)
  • application/form-data
  • text/plain

Lorsque la requête POST est envoyée par un autre moyen qu'un formulaire HTML, par exemple via XMLHttpRequest, le corps peut être de n'importe quel type. Comme décrit dans la spécification HTTP 1.1, la méthode POST est conçue pour permettre une méthode uniforme couvrant les fonctions suivantes :

  • Annotation de ressources existantes
  • Publication d'un message sur un tableau d'affichage, un groupe de discussion, une liste de diffusion, ou un groupe similaire d'articles;
  • Apport d'un bloc de données, tel que le résultat produit par la soumission d'un formulaire, à un processus de traitement de données;
  • Extension d'une base de données au travers d'une opération d'ajout.
La requête a un corps Oui
Une réponse de succès a un corps Oui
Sûre Non
Idempotente Non
Peut être mise en cache Seulement si une information de fraîcheur est incluse
Autorisée dans les  formulaires HTML Oui

Syntaxe

POST /index.html

Exemple

Un simple formulaire utilisant le type de contenu par défaut application/x-www-form-urlencoded :

POST / HTTP/1.1
Host: foo.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 13

say=Hi&to=Mom

Un formulaie utilisant le type de contenu multipart/form-data :

POST /test.html HTTP/1.1 
Host: example.org 
Content-Type: multipart/form-data;boundary="boundary" 

--boundary 
Content-Disposition: form-data; name="field1" 

value1 
--boundary 
Content-Disposition: form-data; name="field2"; filename="example.txt" 

value2

Spécifications

Spécification Titre
RFC 7231, section 4.3.3: POST Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content

Compatibilité des navigateurs

Fonctionnalité Chrome Edge Firefox Internet Explorer Opera Safari Servo
Support simple(Oui)(Oui)(Oui)(Oui)(Oui)(Oui)(Oui)
Fonctionnalité Android Chrome for Android Edge Mobile Firefox for Android IE Mobile Opera Mobile Safari Mobile
Support simple(Oui)(Oui)(Oui)(Oui)(Oui)(Oui)(Oui)

Voir aussi

Étiquettes et contributeurs liés au document

Étiquettes : 
 Contributeurs à cette page : Badacadabra, dattaz
 Dernière mise à jour par : Badacadabra,