DNS RobotDNS Propagation Checker
StartDNSWHOISIPSSL
DNS RobotDNS Propagation Checker

DNS-Propagation-Checker der nächsten Generation

DatenschutzrichtlinieNutzungsbedingungenÜber unsBlogKontakt

DNS-Tools

DNS-AbfrageDNS-GeschwindigkeitstestDomain zu IPNS-AbfrageMX-AbfrageAlle anzeigen

E-Mail-Tools

SPF-Eintrag-CheckerDMARC-CheckerDKIM-CheckerSMTP-Test-ToolE-Mail-Header-AnalyseAlle anzeigen

Website-Tools

WHOIS-AbfrageHosting-CheckerDomain-VerfügbarkeitSubdomain-FinderCMS-ErkennungAlle anzeigen

Netzwerk-Tools

Ping-ToolTraceroutePort-CheckerHTTP-Header-CheckSSL-Zertifikat-CheckAlle anzeigen

IP-Tools

IP-AbfrageMeine IP-AdresseIP-Blacklist-CheckIP zu HostnameASN-AbfrageAlle anzeigen

Hilfs-Tools

QR-Code-ScannerQR-Code-GeneratorUPI QR Code GeneratorWiFi QR Code GeneratorMorsecode-ÜbersetzerAlle anzeigen
© 2026 DNS Robot. Entwickelt von: ❤ Shaik Brothers
Alle Systeme betriebsbereit
Made with
Startseite/Blog/405 Method Not Allowed: Bedeutung und so behebst du den Fehler

405 Method Not Allowed: Bedeutung und so behebst du den Fehler

Shaik Vahid30. Sept. 20268 Min. Lesezeit
nginx-Fehlerseite „405 Not Allowed“ neben den Schritt-für-Schritt-Lösungen für 405 Method Not Allowed
nginx-Fehlerseite „405 Not Allowed“ neben den Schritt-für-Schritt-Lösungen für 405 Method Not Allowed

Kernaussage

405 Method Not Allowed bedeutet: Der Server erkennt die URL, akzeptiert dort aber die HTTP-Methode nicht, die du verwendet hast – zum Beispiel ein POST an eine Seite, die nur GET annimmt. RFC 9110 verlangt, dass der Server die Methoden, die er akzeptiert, in einem Allow-Header auflistet; lies also zuerst diesen Header. Typische Ursachen sind ein Formular oder API-Aufruf mit der falschen Methode, ein POST an eine statische Datei unter nginx, ein Route-Handler, der diese Methode nicht exportiert (Next.js, Flask, Django), WebDAV, das unter IIS PUT und DELETE abfängt, und CORS-Preflight-Anfragen (OPTIONS), die der Server nicht behandelt.

Advertisement

Was ist der Fehler 405 Method Not Allowed?

405 Method Not Allowed ist ein HTTP-Statuscode und bedeutet, dass der Server die angefragte Adresse kennt, aber die Methode nicht zulässt, die deine Anfrage verwendet hat. RFC 9110 (Abschnitt 15.5.6) definiert ihn so, dass die Methode „dem Origin-Server bekannt ist, von der Zielressource aber nicht unterstützt wird“.

Jede HTTP-Anfrage hat eine Methode: GET, um eine Seite zu lesen, POST, um ein Formular abzuschicken oder etwas anzulegen, PUT und PATCH zum Aktualisieren, DELETE zum Löschen und OPTIONS, um zu fragen, was erlaubt ist. Ein 405 bedeutet: Die URL existiert, aber nicht für dieses Verb. Gäbe es die URL gar nicht, bekämst du stattdessen einen 404.

Weil es darum geht, wie eine Anfrage gestellt wurde, und nicht um eine fehlende Seite, muss ein 405 fast immer der Entwickler der Website beheben. Besucher stoßen meist darauf, nachdem sie ein Formular abgeschickt haben oder einem veralteten Link gefolgt sind.

Hinweis

Laut Standard muss eine 405-Antwort einen Allow-Header enthalten, der die Methoden auflistet, die die URL akzeptiert, zum Beispiel Allow: GET, HEAD. Er ist der schnellste Hinweis darauf, was schiefgelaufen ist.

So sieht ein 405-Fehler aus

Server / FrameworkTypische Meldung
nginx405 Not Allowed (darunter steht nginx)
ApacheMethod Not Allowed. The requested method POST is not allowed for this URL.
IISHTTP Error 405.0 - Method Not Allowed. The page you are looking for cannot be displayed because an invalid method (HTTP verb) is being used.
Next.js / APIsEine leere oder JSON-Antwort mit Status 405, oft nur in den DevTools sichtbar
Browser-Konsole (CORS)Ein CORS-Fehler, weil der OPTIONS-Preflight einen 405 erhalten hat

Advertisement

Schritt 1: Lies den Allow-Header

Frag den Server, welche Methoden er für diese URL akzeptiert. Sende entweder eine OPTIONS-Anfrage oder wiederhole die fehlgeschlagene Anfrage mit angezeigten Headern:

bash
# Welche Methoden akzeptiert diese URL?
curl -i -X OPTIONS https://example.com/api/contact

# Fehlgeschlagene Anfrage wiederholen und auf Status und Allow-Header achten
curl -i -X POST https://example.com/api/contact -d 'name=test'
# HTTP/2 405
# allow: GET, HEAD

Das Tool HTTP-Headers von DNS Robot zeigt den Statuscode und die Header, die eine URL auf eine normale GET-Anfrage zurückgibt. Das hilft, wenn du eine Seite im Browser prüfst und nicht eine API.

Nicht jeder Server hält sich an die Regel. Die eingebaute 405-Seite von nginx wird zum Beispiel ohne Allow-Header gesendet. Unter nginx musst du deshalb stattdessen prüfen, welcher location-Block die URL verarbeitet (Lösung 2).

Wenn du Besucher bist

  • Geh zurück und lade die Seite neu, dann schick das Formular noch einmal ab. Ein Formular aus einer alten, zwischengespeicherten Kopie kann an eine Adresse senden, die sich inzwischen geändert hat.

  • Nach dem Abschicken nicht neu laden. Lädst du eine Seite neu, die das Ergebnis eines Formulars ist, kann das einen POST erneut an eine URL senden, die nur GET akzeptiert.

  • Prüfe die Adresse auf Tippfehler oder öffne die Startseite der Website und navigiere erneut.

  • Melde es. Scheitert ein Formular auf der Seite immer, muss der Betreiber das beheben – schick ihm die Adresse der Seite.

Advertisement

Lösung 1: Die richtige Methode an die richtige URL senden

Die häufigste Ursache im Code ist schlicht ein Missverhältnis: Ein Formular oder ein fetch()-Aufruf nutzt POST, während der Endpunkt nur GET akzeptiert, oder die Anfrage geht an die Seiten-URL statt an die API-URL. Vergleiche die Methode in deinem Code mit dem Allow-Header und der Dokumentation der API.

javascript
// Der Endpunkt erlaubt nur POST, ein GET (Standard bei fetch) liefert also 405
const res = await fetch("/api/contact", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ name: "Ana" }),
})
if (res.status === 405) console.log("Allowed:", res.headers.get("allow"))

Tipp

Achte auf abschließende Schrägstriche und Weiterleitungen. Leitet /api/contact mit 301 oder 302 auf /api/contact/ weiter, wiederholen viele Clients die Anfrage als GET, und ein Endpunkt, der nur POST annimmt, antwortet dann mit 405. Mit dem Weiterleitungs-Checker siehst du jeden Hop.

Lösung 2: nginx liefert 405 bei POST an statische Dateien

Der Handler für statische Dateien in nginx bedient nur GET und HEAD. Ein POST an eine .html-Datei oder an eine location, die Dateien ausliefert, statt die Anfrage an deine Anwendung weiterzugeben, bekommt 405 Not Allowed. Das passiert oft, wenn die action eines Formulars auf eine statische Seite zeigt oder ein location-Block für deine App nicht greift.

Die eigentliche Lösung: Leite den POST mit proxy_pass oder fastcgi_pass im richtigen location-Block an eine Anwendung (PHP, Node, Python) weiter. Prüfe, welcher Block die URL verarbeitet:

nginx
# Formular-POSTs müssen die App erreichen, nicht den Handler für statische Dateien
location /api/ {
    proxy_pass http://127.0.0.1:3000;
}

# Nach Änderungen testen und neu laden
# sudo nginx -t && sudo systemctl reload nginx

Tipp

Manche Anleitungen empfehlen error_page 405 =200 $uri;, um den 405 in einen 200 zu verwandeln. Das versteckt den Fehler nur: Die POST-Daten erreichen deinen Code trotzdem nie. Leite die Anfrage stattdessen an die Anwendung weiter.

Advertisement

Lösung 3: IIS blockiert PUT und DELETE (WebDAV)

Auf Windows-Servern mit IIS beansprucht das WebDAV-Modul die Verben PUT und DELETE, sodass REST-APIs (ASP.NET Web API und andere) darauf mit HTTP Error 405.0 antworten. Nutzt du WebDAV nicht, entferne es für deine Website in der web.config:

xml
<system.webServer>
  <modules>
    <remove name="WebDAVModule" />
  </modules>
  <handlers>
    <remove name="WebDAV" />
  </handlers>
</system.webServer>

Prüfe im IIS-Manager außerdem die Einstellungen der Website unter Anforderungsfilterung (Request Filtering), Registerkarte HTTP-Verben (HTTP Verbs). Dort lassen sich einzelne Methoden direkt verbieten (IIS meldet das als 404.6, nicht als 405).

Lösung 4: Die Methode zu deinem Route-Handler hinzufügen

Frameworks liefern 405, wenn eine Route existiert, aber keinen Handler für die verwendete Methode hat:

  • Next.js (App Router): Eine route.ts beantwortet nur die Methoden, die sie exportiert. Exportiert sie GET, aber nicht POST, liefert ein POST 405. Füge export async function POST(request: Request) { … } hinzu.

  • Flask: Routen akzeptieren standardmäßig nur GET. Verwende @app.route("/contact", methods=["GET", "POST"]).

  • Django: Klassenbasierte Views liefern 405 für Methoden ohne passenden Handler (füge eine post()-Methode hinzu), und der Decorator require_http_methods macht dasselbe.

  • Express: Standardmäßig fällt eine nicht passende Methode auf 404 durch, nicht auf 405. Soll deine API 405 liefern, ergänze einen Catch-all-Handler, der den Allow-Header setzt.

Warnung

Behebe einen 405 nicht, indem du auf jeder Route jede Methode erlaubst. Erlaube nur, was jeder Endpunkt tatsächlich unterstützt, und halte den Allow-Header korrekt.

Advertisement

Lösung 5: CORS-Preflight-Anfragen (OPTIONS) behandeln

Ruft eine Webseite eine API auf einer anderen Domain mit JSON oder eigenen Headern auf, sendet der Browser zuerst eine OPTIONS-Preflight-Anfrage. Beantwortet die API diese OPTIONS-Anfrage mit 405, meldet der Browser einen CORS-Fehler und sendet die eigentliche Anfrage nie – obwohl der eigentliche Endpunkt funktioniert hätte.

Sorge dafür, dass die API OPTIONS für diese Routen mit 204 oder 200 und den passenden Headern Access-Control-Allow-Methods und Access-Control-Allow-Headers beantwortet. Die meisten Frameworks haben CORS-Middleware, die das für dich erledigt. Die DNS-Lookup-API von DNS Robot beantwortet den Preflight zum Beispiel mit 204 und den CORS-Headern, sodass Browser sie von jeder Website aus aufrufen können.

Tipp

Aktiviere in den DevTools (F12) → Netzwerk (Network) den Filter, der alle Anfragen zeigt, und suche die OPTIONS-Anfrage direkt vor dem fehlgeschlagenen Aufruf. Ihr Status verrät dir, ob der Preflight das Problem war.

405 vs. 400, 403, 404 und 501

CodeBedeutung
405 Method Not AllowedDie URL existiert, aber nicht für diese Methode
400 Bad RequestDie Anfrage selbst ist fehlerhaft
403 ForbiddenDer Server hat dich verstanden, verweigert aber den Zugriff
404 Not FoundUnter dieser URL existiert nichts
501 Not ImplementedDer Server unterstützt diese Methode für keine einzige URL

Verwandte Anleitungen: 400 Bad Request, 403 Forbidden und 401 Unauthorized.

Prüfe, was eine URL zurückgibt

Der HTTP-Headers-Checker von DNS Robot zeigt Statuscode und Antwort-Header jeder URL. So bestätigst du einen 405 und siehst, welche Serversoftware dahintersteckt.

Testen HTTP-Headers-Checker

Advertisement

Häufig gestellte Fragen

Es bedeutet, dass der Server die URL erkennt, die verwendete HTTP-Methode aber nicht akzeptiert – etwa ein POST an eine Seite, die nur GET erlaubt. Die Antwort sollte einen Allow-Header enthalten, der die Methoden auflistet, die diese URL akzeptiert.

Verwandte Tools

HTTP Headers CheckRedirect CheckerSSL Certificate Check

Verwandte Artikel

400 Bad Request: Bedeutung und so behebst du den Fehler403 Forbidden Fehler: Bedeutung und LoesungHTTP 401 Unauthorized Fehler: Bedeutung und Loesung

Inhaltsverzeichnis

  • Was ist der Fehler 405 Method Not Allowed?
  • So sieht ein 405-Fehler aus
  • Schritt 1: Lies den Allow-Header
  • Wenn du Besucher bist
  • Lösung 1: Die richtige Methode an die richtige URL senden
  • Lösung 2: nginx liefert 405 bei POST an statische Dateien
  • Lösung 3: IIS blockiert PUT und DELETE (WebDAV)
  • Lösung 4: Die Methode zu deinem Route-Handler hinzufügen
  • Lösung 5: CORS-Preflight-Anfragen (OPTIONS) behandeln
  • 405 vs. 400, 403, 404 und 501
  • Häufig gestellte Fragen