Hostwinds Blog
Resultados da busca por:
Cada código de status HTTP conta uma história sobre o que está acontecendo entre um cliente (por exemplo, navegador da web) e um servidor.Algumas histórias são simples;200 significa sucesso, 404 significa que a página não existe.Mas quando você vê o método 405 não permitido, a história é um pouco mais interessante.
Vamos quebrar o que o erro 405 significa, por que isso acontece e como solucionar problemas
O método 405 não permitido a resposta ocorre quando um cliente (como seu navegador ou uma ferramenta de API) faz uma solicitação usando um método HTTP de que o servidor não permite esse recurso.
Por exemplo:
O detalhe importante é que a página que você está tentando alcançar existe, mas o método de solicitação usado para interagir não é permitido pelo servidor.
O erro 405 nem sempre tem uma causa única e óbvia.Pode vir da maneira como uma solicitação é feita, como o servidor está configurado ou mesmo a partir de camadas de segurança extras.Aqui estão as situações mais comuns que o desencadeariam:
Todo recurso em um servidor está configurado para aceitar certos métodos HTTP.Por exemplo:
Um cenário comum é quando um desenvolvedor envia um PUBLICAR solicitação a um URL que foi projetado apenas para lidar PEGAR.O servidor reconhece o recurso, mas como o método não é suportado, ele responde com 405.
Essa é uma das causas mais frequentes, especialmente ao trabalhar com formulários, APIs ou scripts que interagem com os serviços da Web.
Servidores da Web como Apache, Nginx e IIs dão aos administradores controle sobre quais métodos HTTP são permitidos.Diretivas de configuração, como o limite do Apache ou o limite_excep do nginx, podem bloquear explicitamente determinados verbos.
Por exemplo:
Isso geralmente pode acontecer após mudanças para .htaccess Arquivos, blocos de servidor ou configurações de filtragem de solicitação do IIS.Mesmo um pequeno erro de digitação ou uma diretiva esquecida pode resultar em métodos bloqueados sem querer.
As APIs são projetadas com regras rigorosas do método.Em uma API RESTful, diferentes verbos HTTP geralmente correspondem a ações específicas:
Se um desenvolvedor chama um ponto de extremidade com o método errado, como enviar um COLOCAR a um URL que só permite PUBLICAR, o servidor responde com um 405.
Isso é intencional, pois as APIs destinam -se a impor padrões de interação consistentes.Por exemplo, a API do Github não vai deixar você EXCLUIR Um repositório por engano através de uma chamada de método errada, requer o verbo correto ou você receberá uma resposta 405.
As solicitações de formulários da Web e JavaScript (AJAX) são outra fonte comum de 405 erros:
Como os navegadores lidam com os envios de formulário e AJAX automaticamente, mesmo uma pequena incompatibilidade na maneira como uma solicitação é codificada em comparação com a forma como o servidor espera que possa acionar esse erro.
Os iniciantes geralmente encontram isso ao aprender a configurar formulários no PHP ou ao trabalhar com estruturas de front -end que fazem chamadas de API.
Mesmo quando um servidor é configurado corretamente, as camadas de segurança podem intervir e bloquear solicitações.Exemplos incluem:
Nesses casos, o próprio servidor pode suportar o método, mas a solicitação é interceptada antes de atingir o aplicativo.Isso geralmente leva à confusão porque os logs podem mostrar o servidor "rejeitando" o método quando, na realidade, é uma camada de segurança que está fazendo a filtragem.
À primeira vista, o erro 405 pode ser confundido com Outros erros de clientes e servidores.Mas os detalhes são importantes, e conhecer as diferenças ajudará você a diagnosticar corretamente.
Pode ser complicado diagnosticar o 405 porque o servidor está reconhecendo que o recurso existe, mas está se recusando a processar a solicitação da maneira como foi enviado.Para rastrear a causa raiz, ajuda a trabalhar com o problema passo a passo.
Quando um servidor retorna um 405, a resposta deve incluir uma listagem de cabeçalho de permitir quais métodos são suportados para esse recurso.Esta é a maneira do servidor de dizer: "Você não pode fazer isso, mas aqui está o que você pode fazer".
Exemplo:
HTTP/1.1 405 Method Not Allowed
Allow: GET, POST
Os registros geralmente são a maneira mais rápida de descobrir a causa, pois normalmente dão uma explicação direta de por que a solicitação foi rejeitada e confirmar que não é um problema de conectividade mais profundo.
Os logs podem mostrar entradas como:
client sent an unsupported method (PUT) to /index.php
Ferramentas como ondulação ou Carteiro são inestimáveis para confirmar quais métodos realmente funcionam.Testando pontos de extremidade dessa maneira exclui adivinhação e oferece uma visibilidade clara sobre como o servidor responde a diferentes solicitações.
Usando CURL:
curl -i -X GET https://example.com/resource
curl -i -X POST https://example.com/resource
curl -i -X PUT https://example.com/resource
O Postman fornece uma interface visual na qual você pode alternar os métodos de solicitação e ver instantaneamente respostas, tornando-o mais amigável para iniciantes.
Se o servidor permitir o método, mas você ainda estiver obtendo um 405, o problema poderá estar no código do seu aplicativo.
Formulários: Verifique se o atributo de método do elemento <form> corresponde ao que o servidor espera.Exemplo:
<form action="/submit" method="post">
Ajax/busca: Verifique se o método de solicitação está definido corretamente no JavaScript:
fetch('/api/data', {
method: 'POST'
})
Nota: Esta etapa é frequentemente onde os iniciantes são tropeçados, enviando dados para o ponto final direito, mas com o verbo errado.
Se os cabeçalhos e o código parecerem bem, o problema poderá ser restrições no nível do servidor.Os administradores geralmente bloqueiam os métodos por razões de segurança, mas se as solicitações legítimas estiverem sendo interrompidas, é necessário ajustar essas configurações.
Apache: Procure as diretivas de limite ou limitexcept em sua configuração .htaccess ou principal.Exemplo:
<Limit GET POST>
Require all granted
</Limit>
Nginx: Verifique as diretrizes limit_except:
location /api/ {
limit_except GET POST {
deny all;
}
}
Corrigir um erro 405 depende da plataforma ou ambiente em que seu site ou aplicativo está em execução.Como cada tipo de servidor e sistema de gerenciamento de conteúdo lida com solicitações HTTP de maneira diferente, a solução pode variar.Vamos analisar algumas plataformas comuns e seguir as etapas que podemos seguir para revisar as configurações e ajustar as configurações, para que os métodos HTTP corretos sejam permitidos.
1.Reproduzir o erro e ler cabeçalhos
curl -i -X PUT https://example.com/path
2. Se você vir permitir, ajuste sua solicitação/cliente para corresponder.Se não o fizer, continue abaixo.
1.Locate Config
2. Faça backup do arquivo que você editará
sudo cp /etc/apache2/sites-available/site.conf /etc/apache2/sites-available/site.conf.bak
3. Pesquise as restrições de método
# Example: only GET/POST allowed here
<LimitExcept GET POST>
Require all denied
</LimitExcept>
4. Adicione o (s) método (s) necessário (s) ou remova o bloco restritivo
<LimitExcept GET POST PUT>
Require all denied
</LimitExcept>
5. Validar e recarregar
sudo apachectl -t
sudo systemctl reload apache2 # or: sudo systemctl reload httpd
6. Reteste com cacho
curl -i -X PUT https://example.com/path
7. Se ainda for bloqueado, verifique as camadas de segurança (por exemplo, mod_security audit logs) e precedência virtualhost.
1. Abra o bloco do servidor para o seu site
2. Faça backup do arquivo
sudo cp /etc/nginx/sites-available/site.conf /etc/nginx/sites-available/site.conf.bak
3. Procure limite_except blocos
location /api/ {
limit_except GET POST {
deny all;
}
}
4. Adicione o (s) método (s) necessário (s) ou remova o bloco se desnecessário
location /api/ {
limit_except GET POST PUT {
allow all;
}
}
5. Teste e recarregar
sudo nginx -t
sudo systemctl reload nginx
6. Reteste com cacho
curl -i -X PUT https://example.com/api/resource
7. Se você procurar um servidor de aplicativos, confirme o upstream também permite o método.
<system.webServer>
<handlers> ... </handlers>
<security>
<requestFiltering>
<verbs>
<!-- Remove Deny for verbs you need -->
<add verb="PUT" allowed="true" />
</verbs>
</requestFiltering>
</security>
</system.webServer>
6. Recicle o pool de aplicativos ou reinicie o site.
7. Reteste com Curl/Postman.
1. Confirme o contrato
2, sonda o terminal
# Discover allowed methods (if supported)
curl -i -X OPTIONS https://api.example.com/v1/items/123
# Then try the method you intend
curl -i -X PATCH https://api.example.com/v1/items/123
3. Corrija o cliente ou servidor (exemplos)
app.post('/items', createItem);
app.put('/items/:id', updateItem);
// If PUT not defined, add it—or switch your client to POST if that's the design.
@app.route('/items/<id>', methods=['GET','POST','PUT','DELETE'])
def item(id): ...
4. Defina um 405 útil com o cabeçalho de permitir (lado do servidor)
5. Se liderado por um gateway/waf de API, também revise as regras de filtragem por lá.
6. Reteste com Postman/Curl e confirme o fluxo esperado 2xx/3xx/4xx.
Corrigir um erro 405 quando aparece é apenas metade do desafio - prevê -lo de acontecer novamente é o que economiza tempo e frustração a longo prazo.Ao implementar as práticas certas durante o desenvolvimento e a configuração, você pode reduzir as chances de usuários ou aplicativos que se deparam com métodos não suportados.Aqui estão várias abordagens que ajudam a impedir que 405 erros se tornem problemas recorrentes.
Ao escrever formulários, scripts ou chamadas de API, verifique se você está usando apenas os métodos HTTP que o servidor permite.Por exemplo, se o seu servidor aceitar postagem para enviar dados, verifique se você não usa acidentalmente GET ou PUST.A validação de métodos no início do desenvolvimento também ajuda a capturar erros antes de atingirem a produção.Muitas estruturas permitem definir métodos permitidos diretamente em rotas ou controladores, facilitando a aplicação do uso correto.
Os servidores geralmente têm restrições de método definidas em seus arquivos de configuração (como configurações .htaccess, nginx.conf ou API Gateway).Manter um registro de quais métodos são suportados facilita para os desenvolvedores e administradores entenderem os limites.Esta documentação é especialmente útil em equipes maiores ou projetos de longo prazo, onde as regras do servidor podem ser perdidas ou esquecidas ao longo do tempo.
Mesmo com um planejamento cuidadoso, solicitações de método não suportadas podem passar.É por isso que é útil fornecer mensagens de erro claras quando um 405 ocorre.Em vez de um vago "método não permitido", personalize a resposta para que o usuário ou desenvolvedor entenda o que deu errado e como corrigi -lo - por exemplo, incluindo a lista de métodos permitidos no cabeçalho da resposta ou sugerindo o método certo em sua documentação.
Se você estiver construindo APIs, manter as melhores práticas e os padrões HTTP facilitam o que os clientes saibam o que esperar.Por exemplo, se você projetar um terminal para atualizar um recurso, use o put ou o patch de forma consistente.Essa previsibilidade reduz o risco de métodos não suportados serem enviados e ajuda os desenvolvedores externos a interagir com sua API corretamente.
O método 405 não permitido por um erro indica que o servidor sabe que o recurso existe, mas não permite o método que você tentou.
O principal argumento: Verifique o cabeçalho Aportar, revisar os logs e verifique se as regras de código e servidor correspondem aos métodos que você pretende suportar.
Escrito por Hostwinds Team / agosto 27, 2025