--- title: POST slug: Web/HTTP/Méthode/POST tags: - HTTP - Reference - Request method translation_of: Web/HTTP/Methods/POST ---
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 {{HTTPHeader("Content-Type")}}.
La différence entre PUT
et {{HTTPMethod("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 {{htmlattrxref("enctype", "form")}} de l'élément {{HTMLElement("form")}} ou dans l'attribut {{htmlattrxref("formenctype", "input")}} de l'élément {{HTMLElement("input") }}, voir celui des éléments {{HTMLElement("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 {{glossary("percent encoded")}} : c'est la raison pour laquelle ce type de format n'est pas adapté à une utilisation avec des données binaires (utilisez multipart/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 {{domxref("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 :
La requête a un corps | Oui |
---|---|
Une réponse inclut un corps | Oui |
{{Glossary("Safe","Sûre")}} | Non |
{{Glossary("Idempotent","Idempotente")}} | Non |
{{Glossary("Cacheable","Peut être mise en cache")}} | Seulement si une information de péremption est incluse |
Autorisée dans les formulaires HTML | Oui |
POST /index.html
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écification | Titre |
---|---|
{{RFC("7231", "POST", "4.3.3")}} | Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content |
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
{{Compat("http.methods.POST")}}