Este artigo apresenta a teoria relacionada aos métodos HTTP. Os principais, GET e POST, já foram falados no artigo sobre o protocolo HTTP (clique aqui para ser redirecionad ao artigo), contudo, também serão abordados aqui.
Métodos GET e POST
O método GET portanto, solicita ao servidor o envio dos objetos web de um determinado recurso, como por exemplo uma página. Os objetos web são os elementos que compõem uma página, como: texto, imagem, vídeo e inclusive a página em si.
Outro método bastante comum, não tanto quando o GET, é o método POST. Neste caso, o cliente está submetendo uma informação ao servidor.
O servidor por sua vez recebe e trata esta informação que é enviada encapsulada no campo entity body da mensagem. Um exemplo intuitivo do método POST seria o preenchimento de um formulário, ou de um cadastro em um site de compras.
Repare que como o servidor é obrigado a tratar a informação de post, muitos sites colocam limitações a este método. Um usuário malicioso poderia utilizar este campo para enviar um Trojan, ou um código malicioso a ser executado no servidor.
Por isso, caso você tente realizar uma requisição do tipo POST por um agente que não seja um navegador, por exemplo: uma API JAVA, essa requisição retornará um erro de não permissão.
Outros métodos HTTP
Além dos métodos GET e POST, existe uma variedade de opções de manipulação de recursos, como: head, put, delete, trace entre outros. Abordaremos alguns destes métodos com breve explicação.
Caso o leitor deseje se aprofundar neste tema, referências serão citadas ao longo do texto.
O método HEAD solicita informações de metadados de um determinado recurso. Este método é útil para economizar largura de banda, ao verificar apenas se houve alguma modificação no recurso deste o ultimo download.
Caso o estado seja diferente do armazenado pelo cliente se faz necessária uma nova requisição – request.
O método PUT determina que as informações enviadas via entity body sejam armazenadas pelo recurso. Então, qual a diferença entre o PUT e o POST? No caso do método POST, a informação é apenas parte do processo.
Este é um método de uso mais geral, podendo ser aplicado em diferentes situações como: a identificação de um recurso e especificação de comandos para manipular uma entidade anexa, ou seja, os dados podem conter informações ou operações a serem executadas.
Ainda falando dos métodos, podemos citar o DELETE que obviamente apaga um determinado recurso.
O método TRACE consiste em uma chamada loop-back de um determinado recurso. Esse método permite ao cliente “ver” todo o processo de ida e volta da requisição.
Muito utilizado em procedimento de testes e diagnósticos relacionado a comunicação com o servidor.
Já o método OPTION descreve ao cliente as opções de configuração relacionadas à um determinado recurso do servidor. Com o CONNECT é possível determinar um tunelamento entre o cliente e o recurso alvo usando SSL.
O nosso último método descrito é o PATCH. Este foi definido posteriormente ao protocolo HTTP 1.0 na RFC 5789.
Quando existe a necessidade de uma modificação pontual de um determinado recurso, é a este método que recorremos. Se você quiser se aprofundar ainda mais nos métodos HTTP, segue o link.
Métodos HTTP Seguros
Cada método tem uma especialidade, ou seja, alguma operação executada a partir de seu acionamento. Alguns destes métodos apenas solicitam dados de um recurso do servidor. Estes são denominados métodos seguros.
Um método seguro é aquele que não acarreta em alteração do recurso e, portanto, não apresenta risco ao servidor.
São métodos seguros: GET, HEAD e OPTION. Visto que ações são executadas a partir do cliente, é intuitivo dizer que deve ser considerada com cautela as ações que um cliente possa infligir ao servidor.
As ações representam a interação entre cliente/servidor, que podem ser legitimas ou maliciosas. Tendo isso em mente, uma ação não segura pode acarretar em dano à algum recurso do servidor.
Por esse motivo é possível que um servidor não aceite requisições oriundas de um agende diferente do navegador.
Podemos ver esse exemplo acontecendo quando realizamos uma requisição POST através de uma API JAVA. Neste caso, será retornado um status de método não permitido.
Contudo, se a requisição é bem sucedida se realizada por intermédio do browser contendo o formulário. Não é garantido que um método GET não produza efeitos colaterais no servidor.
Contudo, não será de responsabilidade do cliente caso ocorra algum efeito colateral por método seguro.
Métodos idempotentes
Todo método seguro é idempotente, mas um método idempotente não necessariamente é um método seguro.
Ser um método idempotente significa que o resultado originado por sucessivas ações de requisição HTTP sempre terá o mesmo efeito que uma única requisição. Outros exemplos de métodos idempotentes não seguros, são: PUT e DELETE.
Referências Bibliográficas
- HTTP Methods por Mozilla developer
- Métodos seguros por MDN
- RFC 2616 – Definição e métodos
- Kurose, James F., and Keith W. Ross. “Redes de Computadores e a Internet.” Pearson – 6° edição
- Tanenbaum, Andrew et al. “Redes de Computadores.” Editora Pearson – 5° edição.
Juliana Mascarenhas
Data Scientist and Master in Computer Modeling by LNCC.
Computer Engineer
Tutorial: Instale seu Servidor DNS no Linux com Bind9 Passo a Passo
Nesse tutorial vamos dar todo o passo a passo para que você instale uma configuração…
SSH: Como criar chave pública
Nesse tutorial vamos ensinar a criar e configurar o acesso a um servidor SSH usando…
Socket em Python criando chat UDP
Tutorial para a criação de um chat simples utilizando sockets em UDP em Python 3….
Socket em Python, criando um Chat
Tutorial para a criação de um chat simples utilizando sockets TCP em Python 3. O…
Como usar apt get com proxy
Ao longo dos tempos sempre me deparo nos laboratórios de rede com a necessidade de…
Qual a melhor IDE para Python?
Encontrar a IDE perfeita é uma jornada pessoal que depende de vários fatores, como suas…