Innehåll

    Serversvar 405 Method Not Allowed

    Vad är statuskod 405

    Statuskod HTTP 405 (Method Not Allowed) indikerar att den begärda metoden inte stöds för den angivna resursen. Detta kan leda till förvirring och problem, särskilt om utvecklare inte vet hur man hanterar detta fel.

    405 - Method Not Allowed

    Definition och betydelse

    Statuskoden 405 innebär att servern har förstått begäran, men den begärda HTTP-metoden är inte tillåten för den specifika resursen. Det är viktigt att skilja detta från andra statuskoder, såsom 404 (Not Found), som anger att resursen inte finns.

    Scenarier när fel 405 uppstår

    • En klient gör en POST-begäran till en resurs som endast tillåter GET-begäran.
    • En resurs accepterar en PUT-begäran, men klienten försöker använda DELETE.
    • Felaktig URL kombinerad med en metod som inte stöds.

    Praktiska exempel på att få fel 405

    Fel vid användning av POST istället för GET

    Om en användare försöker skicka data till en resurs som endast tillåter GET-metoden kommer servern att svara med 405.

    Fel vid åtkomst till resurs som endast stöder PUT

    Om en resurs är konfigurerad för att endast ta emot PUT-begärningar och klienten använder en annan metod, t.ex. POST, kommer det också att resultera i en 405-fel.

    Exempel med felaktig URL och metod

    En klient kan försöka nå en resurs via en felaktig URL med en metod som inte stöds, vilket resulterar i statuskod 405.

    Åtgärda fel 405 på olika programmeringsspråk

    PHP

    I PHP kan du kontrollera vilken metod som används i en begäran och returnera ett lämpligt svar om metoden inte stöds.

    
    if ($_SERVER['REQUEST_METHOD'] !== 'GET') {
        http_response_code(405);
        echo 'Metod inte tillåten';
    }
    

    Vid användning av ramverk som Laravel kan metoder hanteras enkelt genom att definiera rutter som specificerar tillåtna metoder.

    JavaScript (Node.js)

    I Node.js kan du använda Express för att hantera olika HTTP-metoder. Här är ett exempel:

    
    app.post('/myresource', (req, res) => {
        res.status(405).send('Metod inte tillåten');
    });
    

    Genom att ställa in routing kan du säkerställa att rätt statuskoder återges baserat på begäran.

    Python (Flask)

    I Flask kan du specificera vilka metoder som är tillåtna för en rutt. Här är ett exempel:

    
    @app.route('/myresource', methods=['PUT'])
    def my_resource():
        return 'Resurs uppdaterad', 200
    

    Genom att använda dekoratorer kan du enkelt ange tillåtna metoder för varje rutt.

    Vanliga fel och hur man förhindrar dem

    • Noggrann konfiguration av serverinställningar för att undvika oväntade metoder.
    • Kontrollera routing i applikationen för att se till att metoderna är korrekt definierade.
    • Regelbunden testning av API:er för att säkerställa att metoder är korrekt implementerade.

    Rekommendationer för hantering av status 405

    Informera användare om ogiltiga metoder genom tydliga felmeddelanden.

    Dokumentation av API:er är avgörande för utvecklare att förstå vilka metoder som är tillåtna.

    Att ställa in loggning för att spåra fel 405 kan hjälpa till att identifiera problem tidigt.

    HTTP Metod Tillåtna resurs Status vid ogiltig metod
    GET /myresource 200 OK
    POST /myresource 405 Method Not Allowed
    PUT /myresource 200 OK
    DELETE /myresource 405 Method Not Allowed

    Tilläggskoder

    KodBeskrivning
    405.0Metoden är inte tillåten - Begärningsmetoden som används är inte tillåten.