3
respostas

Por que navegadores suportam apenas os métodos GET, POST e HEAD?

Eu fiquei sem entender o motivo e o conteúdo não explica e não possui uma referência pra um conteúdo que explique o motivo. Eu pesquisei e encontrei uma resposta no site Stack Overflow que contradiz essa afirmação, especificando que a limitação pode estar no servidor e que a especificação de formulário HTTP permite apenas os verbos POST e GET.

Texto que está no curso: "Por trás dos panos, o que a Servlet faz é dar suporte a diversos métodos como doGet, doPost, doDelete, doTrace mas na prática é importante saber que os navegadores suportam apenas os métodos GET, POST e HEAD. Se desejar utilizar outros métodos, deverá fazer isso via javascript ou através de outra aplicação cliente."

Fonte: https://cursos.alura.com.br/course/servlet-3-e-fundamentos-web/task/3770

Resposta que eu achei no site Stack Overflow: "Isso não é verdade. Todos os navegadores modernos (i.e., IE, Chrome, Firefox, Safari que foram lançados pelo menos nos últimos 3 anos, possivelmente bem mais) suportam todos os métodos de HTTP. GET é suportado em vários escopos, como em todos os tags com um atributo src (e.g., ).

Para usar os outros métodos, você normalmente usa o objeto XMLHttpRequest, onde você define o método HTTP que quer usar via open().

Há ainda outras formas de enviar requisições HTTP pelo navegador, por exemplo num submit de um

. Nesse caso os navegadores não suportam métodos além de GET e POST a definição de HTML forms limita os verbos apenas a esses dois. Veja a especificação do HTML 4 ou do HTML 5 para maiores detalhes.

Um problema que você talvez esteja encontrando é que existem algumas configurações de servidores que não suportam requisições usando PUT ou DELETE - há algumas versões atrás a configuração padrão do IIS era dessa forma (você pode habilitar os outros métodos mudando a configuração). Mas isso aí seria um problema do servidor, e não do navegador."

Fonte: https://pt.stackoverflow.com/questions/16821/por-que-os-navegadores-n%C3%A3o-implementam-os-protocolos-put-e-delete-do-http

Qual é a regra?

Eu acho que seria interessante colocar uma referência pra essa informação no curso.

3 respostas

Oi Fernando, tudo bem?

No geral, via navegador, só conseguimos enviar requisições GET e POST (envio de formulário (GET ou POST); atributo src de uma imagem (GET); digitar uma URL na bara de endereço do navegador e pressionar enter (GET)).

O XMLHttpRequest que ele fala no link do Stack Overflow é uma API do JavaScript que é comumente utilizada para fazer requisições AJAX para o servidor. Por meio dela conseguimos especificar o método HTTP :)

https://developer.mozilla.org/pt-BR/docs/Web/API/XMLHTTPRequest

Fora isso também depende do servidor suportar aquele tipo de requisição.

Faz sentido? Abraço!

Olá, Lucas, obrigado pela resposta. Acho que entendi o geral, normalmente só é possível usar os verbos GET e POST usando navegador de Internet e pra conseguir usar os outros verbos eu precisaria de API.

Exatamente Fernando! Para usar uma requisição dos outros tipos você vai precisar usar algum código JavaScript! ;)

Abraço!