aboutsummaryrefslogtreecommitdiff
path: root/files/fr/web/http/methods/post/index.html
blob: 11a115ff579be4c1805798d0577c37ae63f554fb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
---
title: POST
slug: Web/HTTP/Methods/POST
tags:
  - HTTP
  - Reference
  - Request method
translation_of: Web/HTTP/Methods/POST
original_slug: Web/HTTP/Méthode/POST
---
<div>{{HTTPSidebar}}</div>

<p>La <strong>méthode HTTP <code>POST</code></strong> envoie des données au serveur. Le type du corps de la requête est indiqué par l'en-tête {{HTTPHeader("Content-Type")}}.</p>

<p>La différence entre <code>PUT</code> et {{HTTPMethod("POST")}} tient au fait que <code>PUT</code> est une méthode idempotente. Une requête <code>PUT</code>, 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 <code>POST</code> successives et identiques peuvent avoir des effets additionnels, ce qui peut revenir par exemple à passer plusieurs fois une commande.</p>

<p>Une requête <code>POST</code> est habituellement envoyée via un <a href="/en-US/docs/Web/Guide/HTML/Forms">formulaire HTML</a> 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<dfn> {{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")}}</dfn> :</p>

<ul>
 <li><code>application/</code><dfn><code>x-www-form-urlencoded</code> : les valeurs sont encodées sous forme de couples clé-valeur séparés par <code>'&amp;'</code>, avec un <code>'='</code> 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 <code>multipart/form-data</code> à la place)</dfn></li>
 <li><dfn><code>multipart/form-data</code></dfn></li>
 <li><dfn><code>text/plain</code></dfn></li>
</ul>

<p>Lorsque la requête <code>POST</code> 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, <code>la méthode POST</code> est conçue pour permettre une méthode uniforme couvrant les fonctions suivantes :</p>

<ul>
 <li>Annotation de ressources existantes</li>
 <li>Publication d'un message sur un tableau d'affichage, un groupe de discussion, une liste de diffusion, ou un groupe similaire d'articles;</li>
 <li>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;</li>
 <li>Extension d'une base de données au travers d'une opération d'ajout.</li>
</ul>

<table class="properties">
 <tbody>
  <tr>
   <th scope="row">La requête a un corps</th>
   <td>Oui</td>
  </tr>
  <tr>
   <th scope="row">Une réponse inclut un corps</th>
   <td>Oui</td>
  </tr>
  <tr>
   <th scope="row">{{Glossary("Safe","Sûre")}}</th>
   <td>Non</td>
  </tr>
  <tr>
   <th scope="row">{{Glossary("Idempotent","Idempotente")}}</th>
   <td>Non</td>
  </tr>
  <tr>
   <th scope="row">{{Glossary("Cacheable","Peut être mise en cache")}}</th>
   <td>Seulement si une information de péremption est incluse</td>
  </tr>
  <tr>
   <th scope="row">Autorisée dans les  <a href="/fr/docs/Web/Guide/HTML/Formulaires">formulaires HTML</a></th>
   <td>Oui</td>
  </tr>
 </tbody>
</table>

<h2 id="Syntaxe">Syntaxe</h2>

<pre class="syntaxbox">POST /index.html
</pre>

<h2 id="Exemple">Exemple</h2>

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

<pre class="line-numbers  language-html">POST / HTTP/1.1
Host: foo.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 13

say=Hi&amp;to=Mom</pre>

<p>Un formulaire utilisant le type de contenu <code>multipart/form-data</code> :</p>

<pre>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</pre>

<h2 id="Spécifications">Spécifications</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Spécification</th>
   <th scope="col">Titre</th>
  </tr>
  <tr>
   <td>{{RFC("7231", "POST", "4.3.3")}}</td>
   <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td>
  </tr>
 </tbody>
</table>

<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2>

<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>

<p>{{Compat("http.methods.POST")}}</p>

<h2 id="Voir_aussi">Voir aussi</h2>

<ul>
 <li>{{HTTPHeader("Content-Type")}}</li>
 <li>{{HTTPHeader("Content-Disposition")}}</li>
</ul>