HTTP 405 Method Not Allowed: wat het betekent en hoe u het oplost

HTTP 405 Method Not Allowed

HTTP 405 Method Not Allowed: oorzaken, Allow-header, oplossingen | We.Inc

Waarom een server 405 antwoordt, welke Allow-header hij moet sturen en hoe u het oplost in Flask, Express en Next.js. Bouw de juiste 405-response voor uw eigen route.

Een 405 Method Not Allowed betekent dat de URL bestaat maar de HTTP-methode die u gebruikte niet accepteert, bijvoorbeeld een POST naar een route die alleen GET afhandelt. De server moet de methoden die hij wel accepteert opsommen in een Allow-header. Stuur een van die methoden, of voeg op de server een handler voor uw methode toe.

405 vergeleken met verwante statuscodes

Vink de methoden aan die uw route afhandelt, kies de methode die een client stuurt, en de bouwer toont de exacte response die de server moet teruggeven: een normaal succes, of een 405 met een Allow-header die de methoden noemt in de volgorde waarin u ze hebt aangevinkt.

Veelgestelde vragen

Is 405 een probleem van de client of van de server?

Het is een 4xx-code, dus de server heeft bezwaar tegen het verzoek. Ofwel moet de client een andere methode gebruiken, ofwel moet de eigenaar van de server ondersteuning toevoegen voor de methode die wordt gestuurd.

Moet een 405-response de Allow-header bevatten?

Ja. RFC 9110 zegt dat de server een Allow-headerveld moet genereren met de methoden die de resource op dat moment ondersteunt. Een lege lijst mag als de resource helemaal geen methoden aanneemt.

Waarom krijg ik 405 als ik een formulier verstuur?

Meestal stuurt het formulier een methode die de route niet accepteert. Een route in Flask antwoordt bijvoorbeeld alleen op GET tot u methods=["GET", "POST"] aan de route-decorator meegeeft.

Waarom geeft Express mij 404 in plaats van 405?

Express behandelt een niet-passende methode en een niet-passend pad op dezelfde manier: geen route heeft gereageerd, dus het verzoek valt door naar de 404-handler. Voeg met app.all een vangnet voor het pad toe om zelf 405 te sturen.

Wat is het verschil tussen 405 en 501?

405 betekent dat deze resource een methode weigert die de server wel begrijpt. 501 betekent dat de server de methode voor geen enkele resource ondersteunt.

De regel in de specificatie

Waar een 405 meestal vandaan komt

Oplossingen per stack

Flask: declareer elke methode die de route aanneemt

Zonder methods= antwoordt de route alleen op GET (Flask voegt HEAD en OPTIONS automatisch toe).

Express: stuur een echte 405 in plaats van door te vallen naar 404

app.all na de echte handlers vangt elke andere methode voor hetzelfde pad op.

Route handler in Next.js: exporteer de methode die u aanroept

app/api/items/route.ts. Een verzoek met een methode die u niet hebt geëxporteerd, kan uw code niet bereiken.

HTML: geef het formulier de methode die de server verwacht

Een formulier zonder method-attribuut verstuurt als GET.

405-responsebouwer

Methoden die deze route afhandelt

Methode die de client stuurt

Wat de server moet terugsturen

De methode wordt ondersteund, dus er komt geen 405 aan te pas.

De methode staat niet in de lijst, dus het antwoord is 405 met een Allow-header die de {n} methoden noemt die u hebt aangevinkt.

Gratis beginnen · Geen creditcard nodig

Gerelateerd: Gidsen

Product

Voor wie

Functies

Bronnen

Bedrijf

Sitemap