HTTP 405 Method Not Allowed: Was es bedeutet und wie du es behebst

HTTP 405 Method Not Allowed

HTTP 405 Method Not Allowed: Ursachen, Allow-Header, Lösungen | We.Inc

Warum ein Server 405 antwortet, welchen Allow-Header er senden muss und wie du es in Flask, Express und Next.js behebst. Baue die richtige 405-Antwort für deine eigene Route.

Ein 405 Method Not Allowed bedeutet, dass die URL existiert, aber die verwendete HTTP-Methode nicht akzeptiert, zum Beispiel ein POST an eine Route, die nur GET verarbeitet. Der Server muss die Methoden, die er akzeptiert, in einem Allow-Header auflisten. Sende eine davon oder füge auf dem Server einen Handler für deine Methode hinzu.

405 im Vergleich mit seinen Nachbarn

Hake die Methoden an, die deine Route verarbeitet, wähle die Methode, die ein Client sendet, und der Builder zeigt die genaue Antwort, die der Server zurückgeben sollte: einen normalen Erfolg oder ein 405 mit einem Allow-Header, der die Methoden in der Reihenfolge enthält, in der du sie angehakt hast.

Häufige Fragen

Ist 405 ein Problem des Clients oder des Servers?

Es ist ein 4xx-Code, der Server beanstandet also die Anfrage. Entweder sollte der Client eine andere Methode nutzen, oder der Betreiber des Servers sollte Unterstützung für die gesendete Methode hinzufügen.

Muss eine 405-Antwort den Allow-Header enthalten?

Ja. RFC 9110 sagt, dass der Server ein Allow-Header-Feld erzeugen muss, das die Methoden auflistet, die die Ressource aktuell unterstützt. Eine leere Liste ist erlaubt, wenn die Ressource gar keine Methoden annimmt.

Warum bekomme ich 405, wenn ich ein Formular absende?

Meist sendet das Formular eine Methode, die die Route nicht akzeptiert. Eine Route in Flask zum Beispiel antwortet nur auf GET, bis du dem Route-Decorator methods=["GET", "POST"] übergibst.

Warum gibt Express mir 404 statt 405?

Express behandelt eine nicht passende Methode genauso wie einen nicht passenden Pfad: Keine Route hat geantwortet, also fällt die Anfrage zum 404-Handler durch. Füge mit app.all einen Catch für den Pfad hinzu, um selbst 405 zu senden.

Was ist der Unterschied zwischen 405 und 501?

405 bedeutet, dass diese Ressource eine Methode ablehnt, die der Server versteht. 501 bedeutet, dass der Server die Methode für keine Ressource unterstützt.

Die Regel in der Spezifikation

Woher ein 405 meistens kommt

Lösungen pro Stack

Flask: jede Methode deklarieren, die die Route annimmt

Ohne methods= antwortet die Route nur auf GET (Flask fügt HEAD und OPTIONS automatisch hinzu).

Express: ein echtes 405 senden, statt zu 404 durchzufallen

app.all nach den echten Handlern fängt jede andere Methode für denselben Pfad ab.

Next.js Route Handler: die Methode exportieren, die du aufrufst

app/api/items/route.ts. Eine Anfrage mit einer Methode, die du nicht exportiert hast, kann deinen Code nicht erreichen.

HTML: dem Formular die Methode geben, die der Server erwartet

Ein Formular ohne method-Attribut sendet per GET.

Builder für 405-Antworten

Methoden, die diese Route verarbeitet

Methode, die der Client sendet

Was der Server zurücksenden sollte

Die Methode wird unterstützt, ein 405 ist also nicht im Spiel.

Die Methode steht nicht in der Liste, die Antwort ist also 405 mit einem Allow-Header, der die {n} angehakten Methoden nennt.

Kostenlos starten · Keine Kreditkarte nötig

Verwandt: Ratgeber

Produkt

Für wen

Funktionen

Ressourcen

Unternehmen

Sitemap