--- title: POST slug: Web/HTTP/Methods/POST tags: - HTTP - Método de requisição - Referencia translation_of: Web/HTTP/Methods/POST ---
O método HTTP POST envia dados ao servidor. O tipo do corpo da solicitação é indicado pelo cabeçalho {{HTTPHeader("Content-Type")}}.
A diferença entre PUT e {{HTTPMethod("POST")}} é que PUT é idempotente: chamá-lo uma vez ou várias vezes sucessivamente tem o mesmo efeito (ou seja, nenhum efeito colateral), onde sucessivos POST idênticos podem ter efeitos adicionais, assim como passando uma ordem várias vezes.
Uma solicitação POST geralmente é enviada por meio de um formulário HTML e resulta em uma alteração no servidor. Nesse caso, o tipo de conteúdo é selecionado colocando a string adequada no atributo {{htmlattrxref("enctype", "form")}} do elemento {{HTMLElement("form")}} ou o atributo {{htmlattrxref("formenctype", "input")}} dos elementos {{HTMLElement("input")}} ou {{HTMLElement("button")}}:
application/x-www-form-urlencoded: as chaves e valores são codificados em tuplas de valor-chave separadas por '&', com um '=' entre a chave e o valor. Caracteres não alfanuméricos em chaves e valores são {{glossary ("percent-encoding", "percent encoded")}}: este é o motivo pelo qual esse tipo não é adequado para uso com dados binários (ao invés disso, use multipart/form-data)multipart/form-datatext/plainQuando a requisição POST é enviada através de um método diferente de um formulário HTML - como por meio de um {{domxref("XMLHttpRequest")}} - o corpo pode assumir qualquer tipo. Conforme descrito na especificação HTTP 1.1, o POST é projetado para permitir que um método uniforme cubra as seguintes funções:
| Requisição tem corpo | Sim |
|---|---|
| Resposta bem-sucedida tem corpo | Sim |
| Seguro | Não |
| Idempotente | Não |
| Cacheável | Somente se as informações de atualização estiverem incluídas |
| Permitido em formulários HTML | Sim |
POST /index.html
Um simples formulário utilizando o padrão content type 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
Um formulário utilizando o content type 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
| Especificação | Título |
|---|---|
| {{RFC("7231", "POST", "4.3.3")}} | Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content |
{{Compat("http.methods.POST")}}