Principais diferenças entre os métodos HTTP GET e POST

http_imgSendo informal e direto, o HTTP – Hypertext Transfer Protocol(Protocolo de Transferência de Dados) é um protocolo ou padrão de rede implementado em cima do TCP para que browsers e servidores possam se comunicar.

Um cliente HTTP é um browser, ou seja, Chrome, Firefox, Internet Explore, entre outros, são software’s que se comunicam com servidores através do HTTP. O tipo de servidor a que me refiro aqui também são software’s, como por exemplo, o Apache e o IIS(Microsoft).

Os principais métodos de comunicação HTTP são: GET e POST.

Visibilidade – A grande diferença entre os métodos GET e POST provavelmente é a visibilidade. Uma requisição GET é enviada como string anexada a URL, enquanto que a requisição POST é encapsulada junto ao corpo da requisição HTTP e não pode ser vista.

http_diagram

Tamanho – Como a requisição GET é feita via URL, obviamente há uma limitação no tamanho da mensagem enviada. A string não pode conter mais que 255 caracteres(embora exista diferenças entre navegadores, mas em geral o limite é 255). Já na requisição POST não há limitações de comprimento da mensagem, já que a mesma é enviada no corpo da requisição HTTP.

Performance – A requisição GET é relativamente mais rápida, já que ela é mais simples. Na requisição POST há uma perda de tempo no encapsulamento da mensagem.

Tipos – Já que GET é enviado via URL, então nós sabemos que ela só transporta textos. A requisição POST não tem restrições, pode transportar tanto texto, como dados binários.

Favoritos/Bookmarks – Por se tratar apenas de uma URL, a requisição GET pode ser armazenada em cache, ou em um sistema de bookmark(favoritos). A mesma coisa não é possível para requisições POST.

Método HTML Padrão – GET é o método HTML padrão. Para submeter um formulário HTML usando POST é preciso especificar no atributo “method” o valor “POST”.

Dados – As requisições GET são limitadas ao padrão ASCII, enquanto que requisições POST também podem usar o atributo “enctype” com o valor “multipart/form-data”, que faz uso do padrão UCS(Universal Multiple-Octet Coded Character Set).

21 Replies to “Principais diferenças entre os métodos HTTP GET e POST”

  1. Parabéns pelo POST, porém não concordo com o seguinte trecho do seu artigo:
    ” …
    enquanto que a requisição POST é encapsulada junto ao corpo da requisição HTTP e não pode ser vista … ”

    Todo o conteúdo enviado através de uma requisição HTTP pode ser visto, pois este protocolo não utiliza camada de criptografia (SSL). Sugiro que altere a frase apenas para que fique claro isso, pois algumas pessoas que estão iniciando o aprendizado podem se confundir.

    Se por exemplo usarmos um software numa rede corporativa para “escutar” os pacotes trafegados na rede, conseguimos até mesmo recuperar as senhas digitadas em determinadas páginas/sistemas.

    Att.

    1. Correto, mas no trecho citado eu me refiro a questão visibilidade como um diferencial em relação ao método GET. Se um desenvolvedor precisa enviar dados para cadastro ou atualização no banco de dados, sem dúvidas o método correto é o POST. Obviamente, existem meios de interceptar uma requisição HTTP. É necessário bom senso para analisar quais informações irão trafegar e se é necessário ou não habilitar a SSL(Secure Socket Layer), como é o caso dos internet banks, lojas virtuais, etc.
      Obrigado pelo comentário!

  2. Parabéns Marcelo Oliveira, melhor explicação que eu li.
    Ao Felipe Marques, obrigado por esclarecer a situação da necessidade do SSL quando se referir ao envio de senhas.

Deixe um comentário para Thiago Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Time limit is exhausted. Please reload CAPTCHA.