Hostwinds Blog
Zoekresultaten voor:
Elke HTTP -statuscode vertelt een verhaal over wat er gebeurt tussen een client (bijv. Webbrowser) en een server.Sommige verhalen zijn eenvoudig;200 betekent succes, 404 betekent dat de pagina niet bestaat.Maar als je 405 -methode niet toegestaan ziet, is het verhaal iets interessanter.
Laten we afbreken wat de 405 -fout betekent, waarom deze gebeurt en hoe ze het kunnen oplossen
De 405 -methode is niet toegestaan om respons gebeurt wanneer een client (zoals uw browser of een API -tool) een verzoek indient met behulp van een HTTP -methode die de server niet toestaat voor die bron.
Bijvoorbeeld:
Het belangrijke detail is dat de pagina die u probeert te bereiken bestaat, maar de aanvraagmethode die wordt gebruikt om ermee te interageren is niet toegestaan door de server.
De 405 -fout heeft niet altijd een enkele, voor de hand liggende oorzaak.Het kan voortkomen uit de manier waarop een verzoek wordt gedaan, hoe de server is geconfigureerd, of zelfs van extra beveiligingslagen.Hier zijn de meest voorkomende situaties die het zouden activeren:
Elke bron op een server is ingesteld om bepaalde HTTP -methoden te accepteren.Bijvoorbeeld:
Een gemeenschappelijk scenario is wanneer een ontwikkelaar een NA verzoek om een URL die alleen is ontworpen om te hanteren KRIJGEN.De server herkent de bron, maar omdat de methode niet wordt ondersteund, reageert deze met 405.
Dit is een van de meest voorkomende oorzaken, vooral bij het werken met vormen, API's of scripts die interageren met webservices.
Webservers zoals Apache, Nginx en IIS geven beheerders controle over welke HTTP -methoden zijn toegestaan.Configuratierichtlijnen zoals de limiet van Apache of Limit_Except van Nginx kunnen bepaalde werkwoorden expliciet blokkeren.
Bijvoorbeeld:
Dit kan vaak gebeuren na wijzigingen in .htaccess Bestanden, serverblokken of IIS -aanvraagfilterinstellingen.Zelfs een kleine typefout- of over het hoofd gezien richtlijn kan ertoe leiden dat methoden onbedoeld worden geblokkeerd.
API's zijn ontworpen met strikte methoderegels.In een RESTful API komen verschillende HTTP -werkwoorden meestal overeen met specifieke acties:
Als een ontwikkelaar een eindpunt roept met de verkeerde methode, zoals het verzenden van een NEERZETTEN naar een URL die het alleen toestaat NA, de server reageert met een 405.
Dit is opzettelijk, omdat API's bedoeld zijn om consistente interactiepatronen af te dwingen.De API van GitHub kan je bijvoorbeeld niet VERWIJDEREN Een repository per ongeluk via een verkeerde methodeaanroep, het vereist het juiste werkwoord, of u krijgt een 405 -reactie.
Webformulieren en JavaScript (AJAX) -verzoeken zijn een andere veel voorkomende bron van 405 fouten:
Aangezien browsers automatisch omgaan met formulier en AJAX -inzendingen, zelfs een kleine mismatch in hoe een verzoek wordt gecodeerd versus hoe de server verwacht dat het deze fout kan activeren.
Beginners komen dit vaak tegen bij het leren instellen van formulieren in PHP of bij het werken met frontend frameworks die API -oproepen voeren.
Zelfs wanneer een server correct is geconfigureerd, kunnen beveiligingslagen ingrijpen en aanvragen blokkeren.Voorbeelden zijn:
In deze gevallen kan de server zelf de methode ondersteunen, maar het verzoek wordt onderschept voordat het de toepassing bereikt.Dit leidt vaak tot verwarring omdat logboeken de server de methode kunnen "afwijzen", terwijl het in werkelijkheid een beveiligingslaag is die het filteren doet.
Op het eerste gezicht kan de 405 -fout worden aangezien voor Andere client- en serverfouten.Maar de details zijn belangrijk, en het kennen van de verschillen zal u helpen het correct te diagnosticeren.
Het kan lastig zijn om de 405 te diagnosticeren omdat de server erkent dat de bron bestaat, maar het weigert het verzoek te verwerken zoals het is verzonden.Om de oorzaak op te sporen, helpt het om stap voor stap het probleem op te lossen.
Wanneer een server een 405 retourneert, moet het antwoord een koptekstverlijsting bevatten welke methoden worden ondersteund voor die bron.Dit is de manier van de server om te zeggen: "Dat kan je niet doen, maar dit is wat je kunt doen."
Voorbeeld:
HTTP/1.1 405 Method Not Allowed
Allow: GET, POST
Logboeken zijn vaak de snelste manier om de oorzaak aan het licht te brengen, omdat ze meestal een directe uitleg geven waarom het verzoek is afgewezen en bevestigen dat het geen diepere connectiviteitsprobleem is.
Logboeken kunnen vermeldingen tonen zoals:
client sent an unsupported method (PUT) to /index.php
Tools zoals Krul of Postbode zijn van onschatbare waarde om te bevestigen welke methoden daadwerkelijk werken.Het testen van eindpunten op deze manier regelt giswerk en geeft u een duidelijke zichtbaarheid van hoe de server op verschillende verzoeken reageert.
Curl gebruiken:
curl -i -X GET https://example.com/resource
curl -i -X POST https://example.com/resource
curl -i -X PUT https://example.com/resource
Postman geeft een visuele interface waar u aanvraagmethoden kunt schakelen en onmiddellijk antwoorden kunt zien, waardoor het meer beginnersvriendelijk is.
Als de server de methode toestaat, maar u nog steeds een 405 krijgt, kan het probleem in uw applicatiecode staan.
Formulieren: Zorg ervoor dat het kenmerk van het <vorm> element overeenkomt met wat de server verwacht.Voorbeeld:
<form action="/submit" method="post">
Ajax/fetch: Controleer of de aanvraagmethode correct is ingesteld in JavaScript:
fetch('/api/data', {
method: 'POST'
})
Notitie: Deze stap is vaak waar beginners worden gestruikeld en gegevens naar het juiste eindpunt verzenden, maar met het verkeerde werkwoord.
Als zowel headers als code er goed uitzien, kunnen het probleem beperkingen op serverniveau zijn.Admins blokkeren vaak methoden om veiligheidsredenen, maar als legitieme verzoeken worden gestopt, is het aanpassen van deze instellingen nodig.
Apache: Zoek naar limiet- of limitexcept -richtlijnen in uw .htaccess of hoofdconfiguratie.Voorbeeld:
<Limit GET POST>
Require all granted
</Limit>
Nginx: Controleer limit_except richtlijnen:
location /api/ {
limit_except GET POST {
deny all;
}
}
Het repareren van een 405 -fout hangt af van het platform of de omgeving waarop uw website of -applicatie actief is.Aangezien elk servertype en contentbeheersysteem HTTP -aanvragen anders verwerkt, kan de oplossing variëren.Laten we enkele gemeenschappelijke platforms bespreken en door de stappen lopen die we kunnen nemen om configuraties te bekijken en instellingen aan te passen, zodat de juiste HTTP -methoden zijn toegestaan.
1. Produceer de fout en leest headers
curl -i -X PUT https://example.com/path
2. Als u het toestaan, past u uw verzoek/client aan bij matching aan.Als u dat niet doet, ga dan verder.
1. Locate configuratie
2. Maak een back -up van het bestand dat u bewerkt
sudo cp /etc/apache2/sites-available/site.conf /etc/apache2/sites-available/site.conf.bak
3. Zoek naar methodebeperkingen
# Example: only GET/POST allowed here
<LimitExcept GET POST>
Require all denied
</LimitExcept>
4. Voeg de benodigde methode (s) toe of verwijder het beperkende blok
<LimitExcept GET POST PUT>
Require all denied
</LimitExcept>
5. Valideren en opnieuw laden
sudo apachectl -t
sudo systemctl reload apache2 # or: sudo systemctl reload httpd
6. opnieuw testen met krul
curl -i -X PUT https://example.com/path
7. Indien nog steeds geblokkeerd, controleert u beveiligingslagen (bijv. Mod_security Audit Logs) en VirtualHost -voorrang.
1. Open het serverblok voor uw site
2. Maak een back -up van het bestand
sudo cp /etc/nginx/sites-available/site.conf /etc/nginx/sites-available/site.conf.bak
3. Zoek naar limit_except blokken
location /api/ {
limit_except GET POST {
deny all;
}
}
4. Voeg de benodigde methode (s) toe of verwijder het blok indien onnodig
location /api/ {
limit_except GET POST PUT {
allow all;
}
}
5. Test en herladen
sudo nginx -t
sudo systemctl reload nginx
6. opnieuw testen met krul
curl -i -X PUT https://example.com/api/resource
7. Als u naar een app -server proxy gaat, bevestigt u stroomopwaarts ook de methode mogelijk.
<system.webServer>
<handlers> ... </handlers>
<security>
<requestFiltering>
<verbs>
<!-- Remove Deny for verbs you need -->
<add verb="PUT" allowed="true" />
</verbs>
</requestFiltering>
</security>
</system.webServer>
6. Recycle de app -pool of start de site opnieuw.
7. opnieuw testen met Curl/Postman.
1. Bevestig het contract
2, onderzoek het eindpunt
# 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
3. Client of server repareren (voorbeelden)
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.
@app.route('/items/<id>', methods=['GET','POST','PUT','DELETE'])
def item(id): ...
4. Stel een nuttige 405 in met de koptekst (server-side)
5. Indien fronted door een API Gateway/WAF, beoordelingsmethode filterregels daar ook.
6. opnieuw testen met Postman/Curl en bevestig de verwachte 2xx/3xx/4xx -stroom.
Het oplossen van een 405 -fout wanneer deze verschijnt, is slechts de helft van de uitdaging - het voor het weer aan de hand is wat u op de lange termijn tijd en frustratie bespaart.Door de juiste praktijken te plaatsen tijdens de ontwikkeling en configuratie, kunt u de kansen op gebruikers of applicaties verkleinen die niet -ondersteunde methoden worden uitgevoerd.Hier zijn verschillende benaderingen die helpen voorkomen dat 405 fouten terugkerende problemen worden.
Bij het schrijven van formulieren, scripts of API-oproepen, controleer dubbele controle dat u alleen HTTP-methoden gebruikt die de server toestaat.Als uw server bijvoorbeeld post accepteert voor het verzenden van gegevens, zorg er dan voor dat u niet per ongeluk GET of PIT gebruikt.Validatiemethoden vroeg in de ontwikkeling helpen ook fouten te vangen voordat ze de productie bereiken.Veel frameworks laten u toegestane methoden direct in routes of controllers definiëren, waardoor het gemakkelijker wordt om correct gebruik af te dwingen.
Servers hebben vaak methodebeperkingen gedefinieerd in hun configuratiebestanden (zoals .htaccess-, nginx.conf- of API -gateway -instellingen).Door een registratie te houden van welke methoden worden ondersteund, wordt het voor zowel ontwikkelaars als beheerders gemakkelijker om de limieten te begrijpen.Deze documentatie is vooral handig in grotere teams of projecten op lange termijn, waarbij serverregels anders na verloop van tijd verloren kunnen gaan of vergeten.
Zelfs met een zorgvuldige planning kunnen niet -ondersteunde methodeaanvragen doorlopen.Daarom is het handig om duidelijke foutmeldingen te geven wanneer een 405 optreedt.In plaats van een vage "methode die niet is toegestaan", neemt het antwoord aan, zodat de gebruiker of ontwikkelaar begrijpt wat er mis is gegaan en hoe deze te corrigeren - bijvoorbeeld door de lijst met toegestane methoden in de responskop op te nemen of de juiste methode in uw documentatie voor te stellen.
Als u API's bouwt, maakt het vasthouden aan REST best practices en HTTP -normen het voor klanten gemakkelijker om te weten wat u kunt verwachten.Als u bijvoorbeeld een eindpunt ontwerpt voor het bijwerken van een resource, gebruik Put of Patch consequent.Deze voorspelbaarheid vermindert het risico dat niet -ondersteunde methoden worden verzonden en helpt externe ontwikkelaars om correct met uw API te communiceren.
De 405 -methode is niet toegestaan om fout te vertellen dat de server weet dat de bron bestaat, maar de methode die u hebt geprobeerd niet toestaat.
De belangrijkste afhaalmaaltijd: Controleer de header toestaan, bekijk logboeken en zorg ervoor dat uw code- en serverregels overeenkomen met de methoden die u van plan bent te ondersteunen.
Geschreven door Hostwinds Team / augustus 27, 2025