Innehåll

    Serversvar 401 Unauthorized

    HTTP-statuskod 401 (Unauthorized)

    HTTP-statuskod 401 indikerar att begäran inte kunde genomföras eftersom giltig autentisering saknas för den begärda resursen. Denna kod är vanlig inom webbprogrammering och kan ofta leda till förvirring bland utvecklare, särskilt vid arbete med API:er. I denna artikel kommer vi att granska de vanligaste orsakerna till att denna status uppstår, praktiska exempel på dess tillämpning samt hur man kan åtgärda den i olika programmeringsspråk.

    401 - Unauthorized

    Orsaker till statuskod 401

    • Avsaknad av autentiseringsuppgifter
    • Felaktiga inloggningsuppgifter
    • Utgångna åtkomsttoken
    • Felaktigt format på autentiseringshuvuden

    Praktiska exempel

    1. Exempel 1: Åtkomst till skyddad resurs

      Beskrivning: En användare försöker få tillgång till ett API som kräver autentisering, men tillhandahåller inga autentiseringsuppgifter.

      Förväntat beteende: Servern returnerar status 401.

    2. Exempel 2: Felaktiga inloggningsuppgifter

      Beskrivning: En användare skickar en begäran med felaktigt användarnamn och lösenord.

      Förväntat beteende: Servern returnerar status 401 med ett meddelande om misslyckad autentisering.

    3. Exempel 3: Användning av utgången token

      Beskrivning: Användaren försöker använda en token som har gått ut.

      Förväntat beteende: Servern returnerar status 401 med en begäran om att uppdatera token.

    Åtgärder för att lösa statuskod 401 i olika programmeringsspråk

    JavaScript (Node.js)

    Hantera autentisering med hjälp av biblioteket jsonwebtoken.

    
    const jwt = require('jsonwebtoken');
    
    app.get('/protected', (req, res) => {
        const token = req.headers['authorization'];
        if (!token) {
            return res.status(401).send('Unauthorized');
        }
        jwt.verify(token, 'secret_key', (err, user) => {
            if (err) {
                return res.status(401).send('Unauthorized');
            }
            res.send('Access granted');
        });
    });
    

    Python (Flask)

    Använd biblioteket Flask för att kontrollera autentiseringsuppgifter.

    
    from flask import Flask, request, jsonify
    
    app = Flask(__name__)
    
    @app.route('/protected')
    def protected():
        auth = request.authorization
        if not auth or not (auth.username == 'user' and auth.password == 'pass'):
            return jsonify({'message': 'Unauthorized'}), 401
        return jsonify({'message': 'Access granted'})
    

    PHP

    Hantera autentisering med hjälp av huvuden.

    
    <?php
    if (!isset($_SERVER['PHP_AUTH_USER'])) {
        header('HTTP/1.0 401 Unauthorized');
        echo 'Unauthorized';
        exit;
    } else {
        if ($_SERVER['PHP_AUTH_USER'] !== 'user' || $_SERVER['PHP_AUTH_PW'] !== 'pass') {
            header('HTTP/1.0 401 Unauthorized');
            echo 'Unauthorized';
            exit;
        }
        echo 'Access granted';
    }
    ?>
    

    Sammanfattning av statuskod 401

    HTTP-statuskod 401 (Unauthorized) är en viktig del av webbprogrammering, eftersom den hjälper till att säkerställa att endast behöriga användare får åtkomst till skyddade resurser. Genom att förstå de vanligaste orsakerna till felaktig autentisering och hur man kan åtgärda dem kan utvecklare skapa mer robusta och säkra applikationer.

    Orsak Beskrivning Lösning
    Avsaknad av autentiseringsuppgifter Ingen information skickas i begäran. Se till att inkludera autentiseringsuppgifter.
    Felaktiga inloggningsuppgifter Felaktigt användarnamn eller lösenord. Kontrollera inloggningsuppgifter.
    Utgångna token Token har passerat sin giltighetstid. Generera en ny token.

    Tilläggskoder

    KodBeskrivning
    401.1Inloggning misslyckades - Inloggningsförsöket misslyckades på grund av felaktigt användarnamn eller lösenord.
    401.2Inloggning misslyckades på grund av serverkonfiguration - Det finns ett problem med autentiseringskonfigurationen på servern.
    401.3Obehörig på grund av ACL på resurs - Åtkomst nekas på grund av NTFS-filsystembehörigheter.
    401.4Auktorisering misslyckades av filter - Ett ISAPI-filter blockerade begäran på grund av behörighetsproblem.
    401.5Auktorisering misslyckades av ISAPI/CGI-applikationen - ISAPI- eller CGI-applikationen blockerade begäran på grund av behörighetsproblem.
    401.501Åtkomst nekad: gräns för samtidig begäran har nåtts - För många samtidiga förfrågningar från samma klient-IP.
    401.502Åtkomst nekad: maximal gräns för begäranden har nåtts - Klientens IP överskred det maximala antalet förfrågningar under en angiven tid.
    401.503Åtkomst nekad: IP-adress nekad - Klientens IP-adress finns på nekningslistan.
    401.504Åtkomst nekad: värdnamn nekad - Klientvärdnamnet finns på nekningslistan.