Hostwinds Blog

Cerca risultati per:


405 Errore spiegato: cause, correzioni e suggerimenti di prevenzione Immagine in primo piano

405 Errore spiegato: cause, correzioni e suggerimenti di prevenzione

di: Hostwinds Team  /  agosto 27, 2025


Ogni codice di stato HTTP racconta una storia su ciò che sta accadendo tra un client (ad esempio browser Web) e un server.Alcune storie sono semplici;200 significa successo, 404 significa che la pagina non esiste.Ma quando vedi il metodo 405 non consentito, la storia è un po 'più interessante.

Rompi cosa significa l'errore 405, perché accade e come risolverlo

Cosa significa il codice di stato 405

Il metodo 405 non consentito la risposta si verifica quando un client (come il browser o uno strumento API) effettua una richiesta utilizzando un metodo HTTP che il server non consente tale risorsa.

Per esempio:

  • Una presentazione del modulo invia un file INVIARE richiesta, ma il server accetta solo OTTENERE Per quell'URL.
  • Uno script invia un METTERE richiesta, ma l'endpoint è configurato per consentire solo INVIARE e ELIMINARE.

Il dettaglio importante è che la pagina che stai cercando di raggiungere esiste, ma il metodo di richiesta utilizzato per interagire con esso non è consentito dal server.

Cosa potrebbe causare un errore 405

L'errore 405 non ha sempre una sola causa ovvia.Può provenire dal modo in cui viene presentata una richiesta, come è configurato il server o anche da livelli di sicurezza extra.Ecco le situazioni più comuni che lo innescherebbero:

1. Metodo HTTP sbagliato

Ogni risorsa su un server è impostata per accettare determinati metodi HTTP.Per esempio:

  • Una pagina del prodotto potrebbe consentire OTTENERE (per recuperare i dettagli) ma rifiutare INVIARE (per inviare dati).
  • Un endpoint API potrebbe consentire INVIARE Per creare un nuovo elemento ma restituire un 405 se ci provi ELIMINARE.

Uno scenario comune è quando uno sviluppatore invia un INVIARE Richiesta a un URL che è stato progettato solo per gestire OTTENERE.Il server riconosce la risorsa, ma poiché il metodo non è supportato, risponde con 405.

Questa è una delle cause più frequenti, specialmente quando si lavora con forme, API o script che interagiscono con i servizi web.

2. Regole del server non configurate errate

I server Web come Apache, Nginx e IIS danno il controllo degli amministratori su cui sono consentiti i metodi HTTP.Le direttive di configurazione come il limite di Apache o il limite di nginx possono bloccare esplicitamente determinati verbi.

Ad esempio:

  • Un amministratore del server potrebbe configurare un sito per consentire solo OTTENERE e INVIARE, blocco METTERE e ELIMINARE per sicurezza.
  • Se le regole sono troppo rigide (o erroneamente scritte), le richieste legittime possono essere respinte con un 405.

Questo può spesso accadere dopo le modifiche a .htaccess file, blocchi server o impostazioni di filtraggio richieste IIS.Anche un piccolo errore di battitura o una direttiva trascurata può comportare che i metodi siano involontariamente bloccati.

3. Restrizioni API

Le API sono progettate con rigide regole del metodo.In un'API riposante, diversi verbi HTTP di solito corrispondono ad azioni specifiche:

  • OTTENERE → Recupera i dati
  • INVIARE → Crea nuovi dati
  • Put/patch → Aggiorna i dati esistenti
  • ELIMINARE → Rimuovere i dati

Se uno sviluppatore chiama un endpoint con il metodo sbagliato, come l'invio a METTERE a un URL che consente solo INVIARE, il server risponde con un 405.

Questo è intenzionale, poiché le API hanno lo scopo di imporre modelli di interazione coerenti.Ad esempio, l'API di GitHub non te lo permetterà ELIMINARE Un repository per errore tramite una chiamata metodo errata, richiede il verbo corretto o otterrai una risposta 405.

4. Forma errata o configurazione AJAX

Le richieste di moduli Web e JavaScript (AJAX) sono un'altra fonte comune di 405 errori:

  • Una forma potrebbe avere il Method = "post" attributo, ma il server lo consente solo OTTENERE su quell'URL.
  • Javascript's andare a prendere() o XMLHTTPREQUEST Può essere codificato per inviare una richiesta put quando il backend supporta solo Post.

Poiché i browser gestiscono automaticamente i browser e le comunicazioni AJAX, anche una piccola mancata corrispondenza nel modo in cui viene codificata una richiesta rispetto al modo in cui il server si aspetta che possa attivare questo errore.

I principianti spesso lo incontrano quando imparano a impostare i moduli in PHP o quando lavorano con i framework di frontend che effettuano chiamate API.

5. Strumenti di sicurezza

Anche quando un server è configurato correttamente, i livelli di sicurezza possono intervenire e bloccare le richieste.Esempi includono:

  • Firewall dell'applicazione Web (WAFS): Questi monitorano il traffico in arrivo e possono rifiutare metodi come put, elimina o tracciare per ridurre il rischio di attacchi.
  • Plugin di sicurezza: In piattaforme come WordPress, alcuni plugin disabilitano alcuni metodi a livello di sito per prevenire richieste non autorizzate.

In questi casi, il server stesso potrebbe supportare il metodo, ma la richiesta viene intercettata prima che raggiunga l'applicazione.Questo spesso porta alla confusione perché i registri possono mostrare il server "rifiutare" il metodo quando in realtà è un livello di sicurezza che fa il filtro.

Come 405 differisce da codici di stato simili

A prima vista, l'errore 405 può essere confuso Altri errori di client e server.Ma i dettagli contano e conoscere le differenze ti aiuterà a diagnosticare correttamente.

404 non trovato

  • Cosa significa: Il server non riesce a trovare la risorsa che stai richiedendo.
  • Esempio: Provi a visitare esempio.com/page.html, ma la pagina non esiste affatto.
  • Differenza chiave da 405: Con un 404, il problema è che la risorsa stessa non sia lì, mentre con un 405 esiste la risorsa: stai solo usando il metodo sbagliato per interagire con esso.

403 Proibito

  • Cosa significa: La risorsa esiste, ma il server ti sta bloccando dall'accesso.
  • Esempio: Potresti provare a visualizzare una directory privata senza autorizzazioni adeguate.
  • Differenza chiave da 405: Un 403 riguarda i diritti di accesso, mentre un 405 riguarda le restrizioni del metodo.

501 non implementato

  • Cosa significa: Il server non riconosce o supporta affatto il metodo HTTP, per qualsiasi risorsa.
  • Esempio: Un server che non supporta le richieste di patch lancerà questo errore, indipendentemente dalla risorsa che provi.
  • Differenza chiave da 405: Un 501 si applica all'intero server, mentre un 405 si applica solo a una risorsa specifica.

Diagnosi dell'errore 405

Può essere difficile diagnosticare il 405 perché il server sta riconoscendo che esiste la risorsa, ma si rifiuta di elaborare la richiesta nel modo in cui è stata inviata.Per rintracciare la causa principale, aiuta a risolvere il problema passo dopo passo.

1. Controlla i metodi consentiti

Quando un server restituisce un 405, la risposta dovrebbe includere un elenco di intestazioni consentire quali metodi sono supportati per quella risorsa.Questo è il modo di dire del server: "Non puoi farlo, ma ecco cosa puoi fare".

Esempio:

HTTP/1.1 405 Method Not Allowed
Allow: GET, POST
  • Se hai provato a mettere, questa risposta ti dice che solo Get and Post sono validi.
  • Puoi vedere questo utilizzando gli strumenti per sviluppatori browser (scheda di rete) o uno strumento come Postman.
  • L'automazione degli assegni di intestazione in un flusso di lavoro di debug può evidenziare rapidamente l'utilizzo del metodo disallineato su più endpoint.

2. Revisione dei registri del server

I registri sono spesso il modo più veloce per scoprire la causa in quanto in genere forniranno una spiegazione diretta del perché la richiesta sia stata respinta e conferma che non è un problema di connettività più profondo.

  • Apache: Controlla il ERROR_LOG file, di solito in /var/log/apache2/ o /var/log/httpd/.
  • Nginx: Revisione error.log e access.log, di solito in /var/log/nginx/.
  • IIS: Apri Visualizzatore evento o controlla i file di registro IIS sotto %SystemDrive%\ inetpub \ logs \ logfiles \.

I registri possono mostrare voci come:

client sent an unsupported method (PUT) to /index.php

3. Test dell'endpoint

Strumenti come arricciare o Postino sono preziosi per confermare quali metodi funzionano effettivamente.Il test degli endpoint in questo modo esclude le congetture e ti dà una chiara visibilità su come il server risponde a diverse richieste.

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
  • Se ottenere e pubblicare successo ma metti fallisce con un 405, hai identificato la mancata corrispondenza.

Postman fornisce un'interfaccia visiva in cui è possibile attivare i metodi di richiesta e vedere istantaneamente le risposte, rendendolo più adatto ai principianti.

4. Controlla il tuo codice

Se il server consente il metodo ma stai ancora ottenendo un 405, il problema potrebbe essere nel codice dell'applicazione.

Forme: Assicurati che l'attributo del metodo <form> dell'elemento corrisponda a ciò che il server si aspetta.Esempio:

 <form action="/submit" method="post">

Ajax/Fetch: Verificare che il metodo di richiesta sia impostato correttamente in JavaScript:

 fetch('/api/data', {
  method: 'POST'
})
  • Framework: alcuni framework (come Angular, React o Django) possono inadempienza a determinati metodi se non li imposti esplicitamente.Controllare il tuo codice sul lato client e sul lato server per disallineamenti.

Nota: Questo passaggio è spesso dove i principianti vengono inciampati, inviando dati all'endpoint giusto ma con il verbo sbagliato.

5. Esamina la configurazione del server

Se sia le intestazioni che il codice hanno un bell'aspetto, il problema potrebbe essere restrizioni a livello di server.Gli amministratori spesso bloccano i metodi per motivi di sicurezza, ma se vengono arrestate richieste legittime, è necessaria la regolazione di queste impostazioni.

Apache: Cerca le direttive limite o limitexcept nella tua configurazione .htaccess o principale.Esempio:

 <Limit GET POST>
   Require all granted
</Limit>
  • Se manca qui, qualsiasi richiesta PUT restituirà un 405.

Nginx: Controlla le direttive limite_except:

 location /api/ {
   limit_except GET POST {
      deny all;
   }
}
  • Ciò rifiuterebbe metodi diversi da ottenere e pubblicare.
  • IIS: Apri il gestore IIS, vai a richiedere il filtro e rivedi la scheda Verbi HTTP.I verbi bloccati come put o elimina verranno visualizzati qui.

Correzione di un errore 405 per piattaforma/ambiente

La correzione di un errore 405 dipende dalla piattaforma o dall'ambiente su cui è in esecuzione il sito Web o l'applicazione.Poiché ogni tipo di server e sistema di gestione dei contenuti gestisce le richieste HTTP in modo diverso, la soluzione può variare.Passiamo ad alcune piattaforme comuni e camminiamo attraverso i passaggi che possiamo intraprendere per rivedere le configurazioni e regolare le impostazioni in modo che siano consentiti i metodi HTTP corretti.

Pre-ricoverazione rapida (si applica a tutti)

1. Riprodurre l'errore e leggi le intestazioni

curl -i -X PUT https://example.com/path

2. Se si vede, regola la richiesta/client in modo da abbinare.Se non lo fai, continua sotto.

Apache

1.Locate config

  • Configurazione del sito: /etc/apache2/sites-available/*.conf o /etc/httpd/conf.d/*.conf
  • Regole per DIR: progetto .htaccess

2. Esegui il file che modificherai

sudo cp /etc/apache2/sites-available/site.conf /etc/apache2/sites-available/site.conf.bak

3. Cerca le restrizioni del metodo

  • Cercare <Limite ...>, <Limitexcept ...>, o Riswiterule Modelli che bloccano i verbi.
# Example: only GET/POST allowed here
<LimitExcept GET POST>
  Require all denied
</LimitExcept>

4. Aggiungere i metodi necessari o rimuovere il blocco restrittivo

<LimitExcept GET POST PUT>
  Require all denied
</LimitExcept>

5. Convalida e ricarica

sudo apachectl -t
sudo systemctl reload apache2   # or: sudo systemctl reload httpd

6. Ritestare con Curl

curl -i -X PUT https://example.com/path

7. Se ancora bloccato, controlla i livelli di sicurezza (ad es. Registri di audit Mod_Security) e la precedenza di VirtualHost.

Nginx

1. Aprire il blocco server per il tuo sito

  • Percorsi comuni: /etc/nginx/sites-disponibile/, /etc/nginx/conf.d/*.conf

2. Eseguire il backup del file

sudo cp /etc/nginx/sites-available/site.conf /etc/nginx/sites-available/site.conf.bak

3. Cerca limit_except blocchi

location /api/ {
  limit_except GET POST {
    deny all;
  }
}

4. Aggiungere i metodi necessari o rimuovere il blocco se non necessario

location /api/ {
  limit_except GET POST PUT {
    allow all;
  }
}

5. Test e ricarica

sudo nginx -t
sudo systemctl reload nginx

6. Ritestare con Curl

curl -i -X PUT https://example.com/api/resource

7. Se si proxy a un server di app, confermare upstream consente anche il metodo.

IIS (Windows Server)

  1. Aperto Manager IIS → Selezionare il sito.
  2. Vai a FILTRAZIONE RICHIESTA → Verbi HTTP.
  3. Rimuovere eventuali voci di negazione per i verbi necessari (ad es. Put, Elimina) o Aggiungi voci ASCOLTA Se la politica richiede esplicito consente.
  4. Dai un'occhiata Mapping di gestori: Se Webdav è installato e intercetta i verbi necessari, rimuovere o disabilitare il gestore WebDav per quel sito (o disinstallare WebDav se non necessario).
  5. Se presente, revisione web.config per:
<system.webServer>
  <handlers> ... </handlers>
  <security>
    <requestFiltering>
      <verbs>
        <!-- Remove Deny for verbs you need -->
        <add verb="PUT" allowed="true" />
      </verbs>
    </requestFiltering>
  </security>
</system.webServer>

6. Ricicla il pool di app o riavvia il sito.

7. Testest con Curl/Postman.

WordPress e altre piattaforme CMS

  1. Re-Save Permalinks
    • Impostazioni → Permalinks → Salva modifiche (questo aggiorna le regole di riscrittura).
  2. Test per conflitti di plugin
    • Disabilitare temporaneamente tutti i plugin.
    • Restabile uno per uno per trovare l'autore del reato (Plug-in di sicurezza, riposo/API, memorizzazione nella cache e firewall) sono cause comuni).
  3. Controlla le regole generate dalla piattaforma
    • Apache: Sezioni .htaccess aggiunte dai plugin.
    • Nginx: Blocchi server aggiunti per la memorizzazione nella cache/sicurezza che potrebbero contenere i filtri Limite_Except o Metodo.
  4. Se si utilizza l'API REST CMS, verificare i metodi accettati sull'endpoint e regolare di conseguenza il client o la configurazione del percorso.
  5. Testare le azioni chiave (forme, accessi, azioni di amministrazione) dopo ogni modifica.

API (generale)

1. Confirma il contratto

  • Controllare i documenti API per i metodi consentiti di ciascun endpoint e i percorsi previsti.

2, sondare l'endpoint

# 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. Correggi client o server (esempi)

  • Correzione client: inviare il metodo l'endpoint supporta effettivamente (ad esempio, post anziché put).
  • Express (node.js)
 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.
  • FLASCH (Python)
 @app.route('/items/<id>', methods=['GET','POST','PUT','DELETE'])
def item(id): ...

4. Imposta un utile 405 con header consenti (lato server)

  • Se il tuo framework non lo impone automaticamente, aggiungi i metodi consentiti dell'elenco dell'intestazione.

5. Se fronteggiati da un gateway API/WAF, revisione delle regole di filtraggio del metodo anche lì.

6. Ritestare con Postman/Curl e confermare il flusso 2xx/3xx/4xx previsto.

Dopo la correzione: elenco di verifica rapida

  • L'azione ora restituisce un successo o l'errore corretto (non 405).
  • Consentire l'intestazione elenca accuratamente metodi consentiti.
  • I registri mostrano una gestione normale, non un verbo bloccato.
  • I test automatizzati (se li hai) coprono il percorso e il metodo corretti.

Prevenire 405 errori in futuro

Risolvere un errore 405 quando sembra essere solo la metà della sfida: sostenere che accade di nuovo è ciò che ti fa risparmiare tempo e frustrazione a lungo termine.Mettendo in atto le giuste pratiche durante lo sviluppo e la configurazione, è possibile ridurre le possibilità di utenti o applicazioni che si svolgono in metodi non supportati.Ecco diversi approcci che aiutano a impedire a 405 errori di diventare problemi ricorrenti.

Convalida metodi nel codice

Quando si scrivono moduli, script o chiamate API, ricontrollare che si utilizzano solo metodi HTTP che il server consente.Ad esempio, se il tuo server accetta Post per l'invio di dati, assicurarsi di non utilizzare accidentalmente GET o PUT.Convalidando i metodi all'inizio dello sviluppo aiuta anche a catturare errori prima di raggiungere la produzione.Molti framework consentono di definire metodi consentiti direttamente in percorsi o controller, rendendo più facile applicare l'utilizzo corretto.

Regole del server di documenti

I server hanno spesso restrizioni del metodo definite nei loro file di configurazione (come .htaccess, nginx.conf o impostazioni del gateway API).Tenere record di quali metodi sono supportati rende più facile per gli sviluppatori e gli amministratori comprendere i limiti.Questa documentazione è particolarmente utile in team più grandi o progetti a lungo termine, in cui le regole del server possono altrimenti perdersi o dimenticare nel tempo.

Gestione degli errori

Anche con un'attenta pianificazione, potrebbero scivolare richieste di metodi non supportati.Ecco perché è utile fornire messaggi di errore chiari quando si verifica un 405.Invece di un vago "non consentito", personalizza la risposta in modo che l'utente o lo sviluppatore comprendano cosa è andato storto e come correggerlo, ad esempio includendo l'elenco dei metodi consentiti nell'intestazione della risposta o suggerendo il metodo giusto nella documentazione.

Segui gli standard

Se stai costruendo API, attenersi alle migliori pratiche e agli standard HTTP rende più facile per i clienti sapere cosa aspettarsi.Ad esempio, se si progetta un endpoint per l'aggiornamento di una risorsa, utilizzare put o patch in modo coerente.Questa prevedibilità riduce il rischio che vengano inviati metodi non supportati e aiuta gli sviluppatori esterni a interagire correttamente con l'API.

Avvolgendo

Il metodo 405 non consentito l'errore indica che il server sa che esiste la risorsa, ma non consente il metodo che hai provato.

Il takeaway chiave: Controlla l'intestazione di consumo, rivedi i registri e assicurati che le regole del codice e del server abbinano i metodi che intendi supportare.

Scritto da Hostwinds Team  /  agosto 27, 2025