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."
Qual é a regra?
Eu acho que seria interessante colocar uma referência pra essa informação no curso.