Hostwinds Blog

Suchergebnisse für:


405 Erläuterung: Ursachen, Korrekturen und Präventionstipps Ausgewähltes Bild

405 Erläuterung: Ursachen, Korrekturen und Präventionstipps

durch: Hostwinds Team  /  August 27, 2025


Jeder HTTP -Statuscode erzählt eine Geschichte über das, was zwischen einem Client (z. B. Webbrowser) und einem Server passiert.Einige Geschichten sind einfach;200 bedeutet Erfolg, 404 bedeutet, dass die Seite nicht existiert.Aber wenn Sie die 405 -Methode nicht erlaubt sehen, ist die Geschichte etwas interessanter.

Lassen Sie uns aufschlüsseln, was der 405 -Fehler bedeutet, warum es passiert und wie es Fehler behebt

Was der Status von 405 bedeutet

Die 405 -Methode, die nicht zulässig ist, kommt auf, wenn ein Client (wie Ihr Browser oder ein API -Tool) eine Anforderung mit einer HTTP -Methode stellt, die der Server diese Ressource nicht zulässt.

Zum Beispiel:

  • Eine Formulareinreichung sendet a POST Anfrage, aber der Server akzeptiert nur ERHALTEN für diese URL.
  • Ein Skript sendet a SETZEN Anfrage, der Endpunkt ist jedoch so konfiguriert, dass nur zulässig ist POST und LÖSCHEN.

Das wichtige Detail ist, dass die Seite, die Sie erreichen möchten, vorhanden ist, aber die Anforderungsmethode, mit der mit der IT interagiert wird, ist vom Server nicht zulässig.

Was könnte einen 405 -Fehler verursachen

Der 405 -Fehler hat nicht immer eine einzige, offensichtliche Ursache.Es kann aus der Art und Weise, wie eine Anforderung gestellt wird, wie der Server konfiguriert wird, oder sogar aus zusätzlichen Sicherheitsebenen erfolgen.Hier sind die häufigsten Situationen, die es auslösen würden:

1. Falsche HTTP -Methode

Jede Ressource auf einem Server ist so eingerichtet, dass bestimmte HTTP -Methoden akzeptiert werden.Zum Beispiel:

  • Eine Produktseite kann zulassen ERHALTEN (Details abrufen) aber ablehnen POST (Daten einreichen).
  • Ein API -Endpunkt könnte zulassen POST So erstellen Sie ein neues Element, geben Sie jedoch einen 405 zurück, wenn Sie es versuchen LÖSCHEN.

Ein gemeinsames Szenario ist, wenn ein Entwickler a sendet POST Anfrage an eine URL, die nur für die Handlung ausgelegt war ERHALTEN.Der Server erkennt die Ressource, aber da die Methode nicht unterstützt wird, reagiert er mit 405.

Dies ist eine der häufigsten Ursachen, insbesondere bei der Arbeit mit Formularen, APIs oder Skripten, die mit Webdiensten interagieren.

2. Fehlkonfigurierte Serverregeln

Webserver wie Apache, Nginx und IIS geben Administratoren die Kontrolle darüber, welche HTTP -Methoden zulässig sind.Konfigurationsanweisungen wie das Limit von Apache oder das NGINX -Limit_Except können bestimmte Verben explizit blockieren.

Zum Beispiel:

  • Ein Serveradministrator kann eine Site konfigurieren, die nur zuzulassen, um nur zuzulassen ERHALTEN und POST, blockieren SETZEN und LÖSCHEN für Sicherheit.
  • Wenn die Regeln zu streng (oder falsch geschrieben) sind, können legitime Anfragen mit einem 405 abgelehnt werden.

Dies kann oft nach Änderungen zu Änderungen passieren .htaccess Dateien, Serverblöcke oder IIS -Anforderungsfiltereinstellungen.Selbst eine kleine Tippfehler oder eine übersehene Richtlinie kann dazu führen, dass Methoden unbeabsichtigt blockiert werden.

3. API -Beschränkungen

APIs sind mit strengen Methodenregeln ausgelegt.In einer erholsamen API entsprechen verschiedene HTTP -Verben normalerweise spezifischen Aktionen:

  • ERHALTEN → Daten abrufen
  • POST → Neue Daten erstellen
  • Put/Patch → Vorhandene Daten aktualisieren
  • LÖSCHEN → Daten entfernen

Wenn ein Entwickler einen Endpunkt mit der falschen Methode aufruft, z. B. das Senden von a SETZEN zu einer URL, die es nur erlaubt POSTDer Server antwortet mit einem 405.

Dies ist beabsichtigt, da APIs konsistente Interaktionsmuster durchsetzen sollen.Zum Beispiel lässt sich Githubs API nicht zulassen LÖSCHEN Ein Repository aus einem Fehler durch einen falschen Methodenaufruf erfordert das richtige Verb oder Sie erhalten eine Antwort von 405.

4. Falsches Formular oder AJAX -Setup

Webformulare und JavaScript (AJAX) sind eine weitere häufige Quelle von 405 Fehlern:

  • Eine Form könnte die haben method = "post" Attribut, aber der Server erlaubt nur ERHALTEN auf dieser URL.
  • JavaScripts bringen() oder Xmlhttprequest kann codiert werden, um eine Put -Anfrage zu senden, wenn das Backend nur Post unterstützt.

Da Browser automatisch mit Formular- und AJAX -Einreichungen umgehen, wird selbst ein kleines Missverhältnis darin, wie eine Anforderung codiert wird, und wie der Server erwartet, dass er diesen Fehler auslösen kann.

Anfänger begegnen dies häufig beim Lernen, Formulare in PHP einzurichten oder mit Frontend -Frameworks zu arbeiten, die API -Anrufe tätigen.

5. Sicherheitsinstrumente

Selbst wenn ein Server korrekt konfiguriert ist, können Sicherheitsebenen einsteigen und Anforderungen blockieren.Beispiele sind:

  • Webanwendungen Firewalls (WAFS): Diese überwachen eingehende Verkehr und können Methoden wie Put, Löschen oder Verfolgung ablehnen, um das Risiko von Angriffen zu verringern.
  • Sicherheits -Plugins: In Plattformen wie WordPress deaktivieren einige Plugins bestimmte Methoden, um nicht autorisierte Anforderungen zu verhindern.

In diesen Fällen kann der Server selbst die Methode unterstützen, aber die Anforderung wird abgefangen, bevor er die Anwendung erreicht.Dies führt häufig zu Verwirrung, da Protokolle möglicherweise den Server anzeigen, der die Methode "ablehnt" kann, wenn es in Wirklichkeit eine Sicherheitsschicht ist, die die Filterung durchführt.

Wie 405 von ähnlichen Statuscodes unterscheidet

Auf den ersten Blick kann der 405 -Fehler miteinander verwechselt werden Andere Client- und Serverfehler.Die Details sind jedoch wichtig, und das Wissen der Unterschiede hilft Ihnen dabei, sie korrekt zu diagnostizieren.

404 Nicht gefunden

  • Was es bedeutet: Der Server kann die von Ihnen angeforderte Ressource nicht finden.
  • Beispiel: Sie versuchen, Beispiele.com/page.html zu besuchen, aber die Seite existiert überhaupt nicht.
  • Schlüsselunterschied von 405: Bei einem 404 ist das Problem, dass die Ressource selbst nicht da ist, während mit einem 405 die Ressource existiert - Sie verwenden nur die falsche Methode, um mit ihm zu interagieren.

403 Verboten

  • Was es bedeutet: Die Ressource existiert, aber der Server blockiert Sie daran, darauf zuzugreifen.
  • Beispiel: Möglicherweise versuchen Sie, ein privates Verzeichnis ohne ordnungsgemäße Berechtigungen anzusehen.
  • Schlüsselunterschied von 405: Bei einem 403 geht es um Zugriffsrechte, während es in einem 405 um Methodenbeschränkungen geht.

501 nicht implementiert

  • Was es bedeutet: Der Server erkennt oder unterstützt die HTTP -Methode überhaupt nicht für jede Ressource.
  • Beispiel: Ein Server, der Patch -Anfragen nicht unterstützt, wirft diesen Fehler auf, unabhängig davon, welche Ressource Sie versuchen.
  • Schlüsselunterschied von 405: Ein 501 gilt für den gesamten Server, während ein 405 nur für eine bestimmte Ressource gilt.

Diagnose des 405 -Fehlers

Es kann schwierig sein, den 405 zu diagnostizieren, da der Server die existierende Ressource anerkennt, aber es weigert sich, die Anfrage so zu bearbeiten, wie sie gesendet wurde.Um die Grundursache aufzuspüren, hilft es, Schritt für Schritt das Problem zu durcharbeiten.

1. Überprüfen Sie die zulässigen Methoden

Wenn ein Server einen 405 zurückgibt, sollte die Antwort eine Header -Listung zulassen, welche Methoden für diese Ressource unterstützt werden.Dies ist die Art zu sagen: "Das können Sie nicht, aber hier ist, was Sie tun können."

Beispiel:

HTTP/1.1 405 Method Not Allowed
Allow: GET, POST
  • Wenn Sie es versuchten, gibt diese Antwort mit, dass nur Get und Post gültig sind.
  • Sie können dies mithilfe von Browser -Entwickler -Tools (Registerkarte Netzwerk) oder einem Tool wie Postboten sehen.
  • Durch die Automatisierung von Header -Checks in einem Debugging -Workflow kann die Verwendung der Methodenverbrauch über mehrere Endpunkte hinweg schnell hervorgehoben werden.

2. Überprüfen Sie Serverprotokolle

Protokolle sind oft der schnellste Weg, um die Ursache aufzudecken, da sie normalerweise eine direkte Erklärung geben, warum die Anfrage abgelehnt wurde und bestätigt, dass dies kein tieferes Problem mit der Konnektivität ist.

  • Apache: Überprüf den ERROR_LOG Datei, normalerweise in /var/log/apache2/ oder /var/log/httpd/.
  • Nginx: Rezension error.log und Access.log, normalerweise in /var/log/nginx/.
  • Iis: Öffnen Sie den Event -Viewer oder überprüfen Sie die IIS -Protokolldateien unter %SystemDrive%\ inetpub \ logs \ logfiles \.

Protokolle können Einträge wie:

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

3. Testen Sie den Endpunkt

Werkzeuge wie Locken oder Briefträger sind von unschätzbarem Wert für die Bestätigung, welche Methoden tatsächlich funktionieren.Das Testen von Endpunkten auf diese Weise schließt die Vermutung aus und gibt Ihnen eine klare Sichtbarkeit darüber, wie der Server auf verschiedene Anforderungen reagiert.

Verwenden von 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
  • Wenn Get and Post erfolgreich ist, aber mit einem 405 fehlschlägt, haben Sie die Nichtübereinstimmung identifiziert.

Postman gibt eine visuelle Schnittstelle, an der Sie Anforderungsmethoden umschalten und sofort Antworten sehen können, wodurch sie anfängerfreundlicher werden.

4. Überprüfen Sie Ihren Code

Wenn der Server die Methode zulässt, aber Sie immer noch einen 405 erhalten, ist das Problem möglicherweise in Ihrem Anwendungscode.

Formen: Stellen Sie sicher, dass das Methode -Attribut des Methode <Form> -Element mit den Erwartungen des Servers übereinstimmt.Beispiel:

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

Ajax/Fetch: Stellen Sie sicher, dass die Anforderungsmethode in JavaScript korrekt festgelegt ist:

 fetch('/api/data', {
  method: 'POST'
})
  • Frameworks: Einige Frameworks (wie Angular, React oder Django) können bestimmte Methoden standardmäßig standhalten, wenn Sie sie nicht explizit festlegen.Überprüfen Sie Ihren clientseitigen und serverseitigen Code für Misspaarungen.

Hinweis: In diesem Schritt werden häufig Anfänger gestolpert und senden Daten an den richtigen Endpunkt, jedoch mit dem falschen Verb.

5. Serverkonfiguration untersuchen

Wenn sowohl Header als auch Code gut aussehen, können das Problem auf Serverebene einschränken.Administratoren blockieren häufig Methoden aus Sicherheitsgründen, aber wenn legitime Anfragen gestoppt werden, ist es erforderlich, diese Einstellungen anzupassen.

Apache: Suchen Sie nach Grenz- oder Limitexcept -Direktiven in Ihrer .htaccess- oder Hauptkonfiguration.Beispiel:

 <Limit GET POST>
   Require all granted
</Limit>
  • Wenn Put hier fehlt, gibt eine Put -Anfrage eine 405 zurück.

Nginx: Überprüfen Sie die Richtlinien Limit_Except:

 location /api/ {
   limit_except GET POST {
      deny all;
   }
}
  • Dies würde andere Methoden als Get and Post ablehnen.
  • IIS: Öffnen Sie den IIS -Manager, beantragen Sie die Filterung und überprüfen Sie die Registerkarte HTTP -Verben.Blockierte Verben wie Put oder Löschen werden hier angezeigt.

Behebung eines 405 -Fehlers nach Plattform/Umgebung

Das Beheben eines 405 -Fehlers hängt von der Plattform oder Umgebung ab, auf der Ihre Website oder Anwendung ausgeführt wird.Da jedes Servertyp und jedes Content -Management -System HTTP -Anforderungen unterschiedlich bearbeitet, kann die Lösung variieren.Lassen Sie uns einige gängige Plattformen durchgehen und die Schritte durchgehen, die wir unternehmen können, um Konfigurationen zu überprüfen und Einstellungen anzupassen, damit die richtigen HTTP -Methoden zulässig sind.

Schnelle Vorabprüfung (gilt für alle)

1. Den Fehler reproduzieren und Header lesen

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

2. Wenn Sie sehen, dass Sie Ihre Anfrage/Ihren Kunden anpassen.Wenn Sie dies nicht tun, fahren Sie unten fort.

Apache

1. Lichten Sie Konfiguration

  • Site -Konfiguration: /etc/apache2/sites-available/*.conf oder /etc/httpd/conf.d/*.conf
  • Pro-Z-Regeln: Projekt .htaccess

2. Sichern Sie die Datei, die Sie bearbeiten werden

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

3. Suchen Sie nach Methodenbeschränkungen

  • Suchen <limit ...>, <Limitexcept ...>, oder Umkreisten Muster, die Verben blockieren.
# Example: only GET/POST allowed here
<LimitExcept GET POST>
  Require all denied
</LimitExcept>

4. Fügen Sie die erforderlichen Methoden hinzu oder entfernen Sie den restriktiven Block

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

5. Validieren und neu laden

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

6. erneut mit Locken testen

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

7. Wenn Sie noch blockiert sind, überprüfen Sie die Sicherheitsebenen (z. B. mod_security prüfungsprotokolle) und virtuelle Vorrang.

Nginx

1. Öffnen Sie den Serverblock für Ihre Website

  • Gemeinsame Wege: /etc/nginx/sites-available/, /etc/nginx/conf.d/*.conf

2. Sichern Sie die Datei

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

3. Suchen Sie nach limit_except Blöcke

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

4. Fügen Sie die erforderlichen Methoden hinzu oder entfernen Sie den Block, falls unnötig

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

5. Testen und Nachladen

sudo nginx -t
sudo systemctl reload nginx

6. erneut mit Locken testen

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

7. Wenn Sie auf einem App -Server eingestuft werden, bestätigen Sie die Methode auch.

IIS (Windows Server)

  1. Öffnen IIS Manager → Wählen Sie die Site aus.
  2. Gehe zu Anforderungsfilterung → HTTP -Verben.
  3. Entfernen Sie alle Ablehnungseinträge für Verben, die Sie benötigen (z. B. einlegen, löschen) oder addieren Sie Einträge, wenn Ihre Richtlinie explizit zulässt.
  4. Prüfen Handler -Zuordnungen: Wenn Webdav ist installiert und abfasst Verben, die Sie benötigen, den WebDAV -Handler für diese Website entfernen oder deaktivieren (oder WebDAV deinstallieren, falls dies nicht erforderlich ist).
  5. Wenn Sie vorhanden sind, überprüfen Sie Web.config für:
<system.webServer>
  <handlers> ... </handlers>
  <security>
    <requestFiltering>
      <verbs>
        <!-- Remove Deny for verbs you need -->
        <add verb="PUT" allowed="true" />
      </verbs>
    </requestFiltering>
  </security>
</system.webServer>

6. Recyceln Sie den App -Pool oder starten Sie die Website neu.

7. Wiederholen Sie dies mit Locken/Postboten.

WordPress & andere CMS -Plattformen

  1. Re-Save Permalinks
    • Einstellungen → Permalinks → Änderungen speichern (Dies aktualisiert die Umschreibung von Regeln).
  2. Test auf Plugin -Konflikte
    • Deaktivieren Sie vorübergehend alle Plugins.
    • Nach dem anderen nacheinander wieder eingesetzt werden, um den Täter zu finden (Sicherheits-, Ruhe-/API-, Caching- und Firewall-Plugins sind häufige Ursachen).
  3. Überprüfen Sie die plattformgenerierten Regeln
    • Apache: .htaccess -Abschnitte von Plugins hinzugefügt.
    • Nginx: Serverblöcke für Caching/Sicherheit hinzugefügt, die möglicherweise Limit_Except- oder Methodenfilter enthalten.
  4. Wenn Sie die CMS -REST -API verwenden, überprüfen Sie die akzeptierten Methoden am Endpunkt und passen Sie die Client- oder Routenkonfiguration entsprechend an.
  5. Nach jeder Änderung die Schlüsselaktionen (Formulare, Anmeldungen, Administratoraktionen) erneut testen.

APIs (allgemein)

1. Befolgen Sie den Vertrag

  • Überprüfen Sie die API -Dokumente für die zulässigen Methoden und die erwarteten Pfade jedes Endpunkts.

2, den Endpunkt untersuchen

# 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

Fixe client oder server (Beispiele)

  • Client -Fix: Senden Sie die Methode, die der Endpunkt tatsächlich unterstützt (z. B. Post anstelle von 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.
  • Flasche (Python)
 @app.route('/items/<id>', methods=['GET','POST','PUT','DELETE'])
def item(id): ...

4. Setzen Sie einen hilfreichen 405 mit dem Header zulässt (serverseitig).

  • Wenn Ihr Framework es nicht automatisch einstellt, fügen Sie die zulässigen Methoden der Headerliste hinzu.

5. Wenn Sie dort von einem API -Gateway/WAF vorgestellt werden, überprüfen Sie dort auch die Methodenfilterungsregeln.

6. Wiederholen Sie sie mit Postman/Curl und bestätigen Sie den erwarteten 2xx/3xx/4xx -Fluss.

Nach dem Fix: Schnelle Überprüfungsliste

  • Die Aktion gibt nun einen Erfolg oder den richtigen Fehler zurück (nicht 405).
  • Lassen Sie die Header genau zulässigen Methoden zulassen.
  • Protokolle zeigen normales Handling, kein blockiertes Verb.
  • Automatisierte Tests (falls Sie sie haben) decken den korrigierten Pfad und die korrigierte Methode ab.

Verhinderung von 405 Fehlern in der Zukunft

Das Beheben eines 405 -Fehlers, wenn er erscheint, ist nur die Hälfte der Herausforderung - es ist das, was Ihnen auf lange Sicht Zeit und Frustration erspart.Indem Sie die richtigen Praktiken während der Entwicklung und Konfiguration einrichten, können Sie die Wahrscheinlichkeit von Benutzern oder Anwendungen reduzieren, die auf nicht unterstützte Methoden laufen.Hier sind mehrere Ansätze, die dazu beitragen, dass 405 Fehler zu wiederkehrenden Problemen werden.

Validieren Sie die Methoden im Code

Wenn Sie Formulare, Skripte oder API-Aufrufe schreiben, überprüfen Sie, ob Sie nur HTTP-Methoden verwenden, die der Server zulässt.Wenn Ihr Server beispielsweise den Beitrag zum Senden von Daten akzeptiert, stellen Sie sicher, dass Sie nicht versehentlich GET oder Put verwenden.Validierende Methoden frühzeitig bei der Entwicklung hilft auch, Fehler zu fangen, bevor sie die Produktion erreichen.Mit vielen Frameworks können Sie erlaubte Methoden direkt in Routen oder Controllern definieren, sodass die korrekte Nutzung erleichtert wird.

Dokumentserverregeln

Server haben häufig Methodenbeschränkungen in ihren Konfigurationsdateien (wie .htaccess, nginx.conf oder API -Gateway -Einstellungen).Wenn Sie eine Aufzeichnung der unterstützten Methoden behalten, erleichtert es sowohl Entwicklern als auch Administratoren, die Grenzen zu verstehen.Diese Dokumentation ist besonders in größeren Teams oder langfristigen Projekten nützlich, bei denen die Serverregeln im Laufe der Zeit ansonsten verloren gehen oder vergessen werden können.

Fehlerbehandlung

Selbst bei sorgfältiger Planung können nicht unterstützte Methodenanforderungen durchlaufen.Deshalb ist es nützlich, klare Fehlermeldungen anzugeben, wenn ein 405 auftritt.Anstelle einer vagen "Methode, die nicht zulässig" ist, passen Sie die Antwort an, damit der Benutzer oder Entwickler versteht, was schief gelaufen ist und wie sie korrigiert werden kann - beispielsweise die Liste der zulässigen Methoden in den Antwortheader oder die richtige Methode in Ihrer Dokumentation vorschlägt.

Befolgen Sie die Standards

Wenn Sie APIs erstellen, erleichtert es den Kunden, die Best Practices und die HTTP -Standards für die Best Practices und die HTTP -Standards zu halten, zu wissen, was sie erwartet.Wenn Sie beispielsweise einen Endpunkt für die Aktualisierung einer Ressource entwerfen, verwenden Sie Put oder Patch konsequent.Diese Vorhersehbarkeit verringert das Risiko nicht unterstützter Methoden und hilft externen Entwicklern, mit Ihrer API korrekt zu interagieren.

Einpacken

Die 405 -Methode, die nicht zulässig ist, sagt Ihnen, dass der Server weiß, dass die Ressource vorhanden ist, die Methode, die Sie ausprobiert haben, nicht zulässt.

Der wichtigste Imbiss: Überprüfen Sie den Header zulassen, prüfen Sie Protokolle und stellen Sie sicher, dass Ihre Code- und Serverregeln den Methoden entsprechen, die Sie unterstützen möchten.

Geschrieben von Hostwinds Team  /  August 27, 2025