POST
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
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>
, voir 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 (utilisezmultipart/form-data
à la place)multipart/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 inclut un corps | Oui |
Sûre | Non |
Idempotente | Non |
Peut être mise en cache | Seulement si une information de péremption est incluse |
Autorisée dans les formulaires HTML | Oui |
Syntaxe
POST /index.html
Exemple
Un formulaire simple 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 formulaire 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
Specification |
---|
HTTP Semantics # POST |
Compatibilité des navigateurs
BCD tables only load in the browser