HTTP 405 Method Not Allowed: o que significa e como corrigir

HTTP 405 Method Not Allowed

HTTP 405 Method Not Allowed: causas, header Allow e correções | We.Inc

Por que um servidor responde 405, o header Allow que ele precisa enviar e como corrigir em Flask, Express e Next.js. Monte a resposta 405 correta para a sua própria rota.

Um 405 Method Not Allowed significa que a URL existe, mas não aceita o método HTTP que você usou, por exemplo um POST enviado para uma rota que só trata GET. O servidor precisa listar os métodos que aceita em um header Allow. Envie um desses, ou adicione no servidor um handler para o seu método.

O 405 comparado com os vizinhos

Marque os métodos que a sua rota trata, escolha o método que um cliente envia, e o gerador mostra a resposta exata que o servidor deve devolver: um sucesso normal, ou um 405 com um header Allow listando os métodos na ordem em que você os marcou.

Perguntas frequentes

O 405 é um problema do cliente ou do servidor?

É um código 4xx, então é da requisição que o servidor está reclamando. Ou o cliente deve usar outro método, ou o dono do servidor deve adicionar suporte ao que está sendo enviado.

Uma resposta 405 precisa incluir o header Allow?

Sim. A RFC 9110 diz que o servidor deve gerar um campo de header Allow listando os métodos que o recurso suporta no momento. Uma lista vazia é permitida quando o recurso não aceita nenhum método.

Por que recebo 405 ao enviar um formulário?

Geralmente o formulário envia um método que a rota não aceita. Uma rota no Flask, por exemplo, só responde a GET até você passar methods=["GET", "POST"] para o decorator da rota.

Por que o Express me dá 404 em vez de 405?

O Express trata da mesma forma um método e um caminho sem correspondência: nenhuma rota respondeu, então a requisição cai no handler de 404. Adicione uma captura para o caminho com app.all para enviar o 405 você mesmo.

Qual é a diferença entre 405 e 501?

405 significa que este recurso recusa um método que o servidor entende. 501 significa que o servidor não suporta o método para nenhum recurso.

A regra na especificação

De onde um 405 costuma vir

Correções por stack

Flask: declare todos os métodos que a rota aceita

Sem methods=, a rota responde só a GET (o Flask adiciona HEAD e OPTIONS automaticamente).

Express: envie um 405 de verdade em vez de cair no 404

app.all depois dos handlers reais captura todos os outros métodos para o mesmo caminho.

Route handler do Next.js: exporte o método que você chama

app/api/items/route.ts. Uma requisição com um método que você não exportou não consegue chegar ao seu código.

HTML: dê ao formulário o método que o servidor espera

Um formulário sem o atributo method envia como GET.

Gerador de resposta 405

Métodos que esta rota trata

Método que o cliente envia

O que o servidor deve devolver

O método é suportado, então não há 405 envolvido.

O método não está na lista, então a resposta é 405 com um header Allow citando os {n} métodos que você marcou.

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site