--- 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-data
text/plain
Quando 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 |
A tabela de compatibilidade nesta página é gerada a partir de dados estruturados. Se você quiser contribuir com os dados, consulte https://github.com/mdn/browser-compat-data e envie-nos um pull request.
{{Compat("http.methods.POST")}}