Foutmelding “405 Method Not Allowed”: Hoe los je het probleem op?

  1. Home
  2. Handboek
  3. Status code 405

Hoe verhoudt zich de 405 error zich tot andere foutmeldingen?

Webservers informeren de clients, zoals bijvoorbeeld internetbrowsers, over de verwerkingsstatus van het verzonden verzoek met behulp van HTTP-statuscodes. Zo zijn er verschillende codes die het succes of het falen van een verzoek bevestigen – die gaan telkens gepaard met zeer specifieke berichten. Wanneer de browser de status 200 binnenkrijgt, weet hij dat alles correct verlopen is. De gebruiker krijgt deze melding dan ook niet te zien; in plaats daarvan verschijnt simpelweg de aangevraagde content. Een code 400 duidt er op dat er een fout zit aan de client-zijde, zo is er bijvoorbeeld de 403 error en de de 404 error. De Internal Server Error 500 is dan weer de verzamelstatuscode voor fouten aan de kant van de server. Bij STRATO schreven we ook al over de 502-fout, de 503-fout en de 504-fout. Hoewel sommige van deze foutmeldingen relatief vaak voorkomen bij dagelijks gebruik van het World Wide Web, is de error 405 (Method Not Allowed) één van de zeldzamere foutmeldingen. In dit artikel kom je erachter wat precies leidt tot deze foutmelding, en waarom het oplossen van het probleem de verantwoordelijkheid is van de websitebeheerder.


Wat zit achter de 405 HTTP-code?

Het Hypertext Transfer Protocol (afgekort HTTP) definieert methodes die de mogelijke acties aangeven die kunnen worden uitgevoerd aan de kant van de gecontacteerde webserver. Dit omvat bijvoorbeeld de volgende methodes:

  • GET: Haalt informatie op die gekoppeld is aan een specifieke URL-resource
  • HEAD: Haalt de header-informatie op die gekoppeld is aan een URL-resource.
  • POST: Verzendt gegevens naar de webserver - bijvoorbeeld formuliergegevens
  • PUT: Vervangt de gegevens voor een specifieke URL door nieuwe gegevens die door de client worden verzonden.
  • DELETE: Verwijdert de gegevens achter de URL in kwestie.


De administrator kan elke webserver zo configureren dat de individuele methodes al dan niet toegestaan worden door de server. Als er bijvoorbeeld geen interactieve inhoud op de website staat, is het niet meer dan logisch dat de POST-methode niet is toegestaan, aangezien de gebruiker geen opties heeft om zijn eigen gegevens in te voeren en naar de server te sturen. Als er bijvoorbeeld wel een contactformulier op de website is opgenomen, is het belangrijk dat de POST-methode ook is toegestaan. Anders zou de hierboven vermelde foutmelding met de statuscode 405 verschijnen, die de browser en de gebruiker informeert dat de methode niet is toegestaan: ”method not allowed”.

De exacte bewoording van de 405 HTTP-melding varieert van server tot server. Hier zijn enkele van de meer gebruikelijke manieren om de fout weer te geven:

  • 405 Method Not Allowed
  • 405 Not Allowed
  • Method Not Allowed
  • HTTP 405 Error
  • HTTP Error 405 – Method Not Allowed
  • HTTP 405 Method Not Allowed
  • Error: 405 Method Not Allowed
  • 405 – HTTP verb used to access this page is not allowed
  • HTTP Status 405 – HTTP method GET is not supported by this URL

Wanneer komt de error 405 voor?

We hebben al aangegeven dat de 405 error uitsluitend wordt veroorzaakt door een probleem aan de serverzijde. Maar aangezien status code 405 technisch gezien tot de foutmeldingen aan de andere kant, namelijk die van de client behoort (zoals alle 4xx codes), lijkt dit niet logisch. Deze klaarblijkelijke tegenstrijdigheid is echter snel te verklaren. Als je als browsergebruiker een verzoek doorstuurt naar de webserver met een HTTP-methode die de server niet toestaat vanwege de serverconfiguratie, dan ligt de fout aan de client-zijde van de server. In dit geval heeft de client immers gewoon een verkeerd verzoek verzonden. De server is zich er bij de verwerking van het verzoek dan ook niet van bewust dat je alleen geïnteresseerd bent in het aanbod dat de website biedt, bijvoorbeeld het invullen van een contactformulier.

Met name drie scenario's kunnen leiden tot een "method not allowed"-foutmelding:

  • Het verbieden van de overeenkomstige HTTP-methode is te wijten aan een verkeerde configuratie van de webservers of de softwarecomponenten die verondersteld worden de betreffende actie uit te voeren voor de gewenste URL-resource.
  • Het verbieden van de HTTP-methode komt van de webmaster - in de meeste gevallen om veiligheidsredenen. De fout ligt dan in een URL-resource van het webproject in kwestie, die door de programmering de methode niet toestaat.
  • De HTTP-methode is niet toegestaan door de hostingprovider van de websitebeheerder. Dit geldt met name voor de POST-methode, die nodig is voor het invoeren van gegevens en die door sommige aanbieders om veiligheidsredenen bij de toegang tot HTML-documenten wordt geblokkeerd.

Error 405: hoe het probleem op te lossen?

Als je een webproject tegenkomt dat de “405 Not Allowed”-foutmelding toont, kun je het probleem maar moeilijk zelf oplossen. Terwijl je bij andere HTTP-berichten het probleem meestal kunt oplossen met behulp van trucs zoals het verversen van de pagina, het herstarten van de router of het controleren van de proxy-instellingen, zijn deze maatregelen nutteloos bij een 405 http-fout. In dit geval is het zinvol om contact op te nemen met de verantwoordelijke websitebeheerder of de provider om het probleem door te geven of om exacte informatie te krijgen over de oorzaken.

Als je zelf verantwoordelijk bent voor de site die de status code 405 aan bezoekers toont, dan zijn de omstandigheden natuurlijk anders. Afhankelijk van de oorzaak van de foutmelding heb je verschillende opties om het probleem op te lossen. Om te voorkomen dat je websitebezoekers geïrriteerd raken of dat je door de zoekmachines wordt afgestraft, moet je de fout zo snel mogelijk verhelpen.


Oplossing 1: HTTP-methodes inschakelen

Als je niet zeker bent van de oorzaak van de "405 Method Not Allowed"-melding, moet je altijd eerst kijken naar de instellingen van de softwarecomponenten die verantwoordelijk zijn voor het reageren op HTTP-verzoeken. Meestal wordt dit afgehandeld door de webserver, maar een vooraf aangesloten Proxy-server of HTTP-handler (in ASP.NET-webapplicaties) kan ook verantwoordelijk zijn voor het probleem als de methode daar simpelweg niet is ingeschakeld. Aangezien de verschillende toepassingen van elkaar verschillen in de configuratie, moet je eerst uitzoeken hoe de activering of deactivering van de HTTP-methodes voor elke specifieke softwarecomponent werkt.

Voor Apache-webservers worden methodes bijvoorbeeld aangeduid met behulp van de module mod_allowmethods. Deze kan gecontroleerd worden met de ”AllowMethods”-directief in de ”location”-velden, die laatste zijn nodig om de instellingen voor één of meer gewenste URL’s toe te lichten. De configuratie die zowel toegang tot de URL-resource als de gegevensinvoer aan de client-zijde mogelijk maakt, kan dan ook worden geïmplementeerd door de volgende ingave:

<Location "/">
AllowMethods GET POST OPTIONS
</Location>

Tipt!
Bij de oudere versies van Apache worden de toegestane HTTP-methodes gedefinieerd
door de volgende directieven: <limit> en <limitExcept>

Oplossing 2: de broncode opschonen

Als je opzettelijk een HTTP-methode hebt geblokkeerd, bijvoorbeeld om de veiligheid van de website te garanderen (wat gebruikelijk is bij de PUT-methode), maar de client triggert nog steeds zo'n verzoek om URL-resources op te halen, dan is dit vaak te wijten aan een incorrecte programmering van de website. De opgevraagde pagina of het gevraagde element is dus foutief gekoppeld aan de methode, vandaar dat de error 405 het logische gevolg is. De oplossing is om de code die het probleem veroorzaakt in het bijbehorende HTML-document te lokaliseren en de ingevoerde code te vervangen door de juiste request-methode. Als de serverconfiguraties en de source-code dan met elkaar in overeenstemming worden gebracht, dan is de kans groot dat de 405 HTTP-fout uit het browservenster van je bezoeker zal verdwijnen.


Oplossing 3: de veiligheidsbarrière van de provider omzeilen

Zoals al eerder vermeld, kan de 405 error ook voortkomen uit het feit dat de hostingprovider de bijbehorende HTTP-methodes voor bepaalde MIME-types - zoals bijvoorbeeld een HTML-document - om veiligheidsredenen heeft uitgeschakeld. In dit geval kun je natuurlijk contact opnemen met je provider en om goedkeuring vragen - maar als dit niet mogelijk is, zijn er trucs die je in staat stellen om de methode toch te gebruiken voor je webproject. Je kunt de website weergeven en aanbieden met een ander MIME-type dat compatibel is met de gewenste inhoud, om zo de veiligheidsbarrière te omzeilen. POST bijvoorbeeld, is meestal gedeactiveerd voor HTML-pagina's, terwijl de methode functioneert in PHP-documenten. Als je het extensietype verandert, bijvoorbeeld van index.html naar index.php, is de kans groot dat je het "405 Method Not Allowed"-probleem hebt opgelost.


Een tweede truc is om de website die de HTTP-fout veroorzaakt te integreren in de inhoud van de weergegeven 405 error-pagina. Om dit te doen, sla je de pagina in kwestie op in een aparte map en definieer je deze in het configuratiebestand als de officiële 405-foutmelding:

ErrorDocument 405 /PathToFile/example.html

Deze oplossing heeft echter het nadeel, dat alle opeenvolgende bezoeken aan de pagina worden geclassificeerd als fouten, wat het maken van statistieken en analyses natuurlijk bemoeilijkt.