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.
Orsaker till statuskod 401
- Avsaknad av autentiseringsuppgifter
- Felaktiga inloggningsuppgifter
- Utgångna åtkomsttoken
- Felaktigt format på autentiseringshuvuden
Praktiska exempel
-
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.
-
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.
-
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
Kod | Beskrivning |
---|---|
401.1 | Inloggning misslyckades - Inloggningsförsöket misslyckades på grund av felaktigt användarnamn eller lösenord. |
401.2 | Inloggning misslyckades på grund av serverkonfiguration - Det finns ett problem med autentiseringskonfigurationen på servern. |
401.3 | Obehörig på grund av ACL på resurs - Åtkomst nekas på grund av NTFS-filsystembehörigheter. |
401.4 | Auktorisering misslyckades av filter - Ett ISAPI-filter blockerade begäran på grund av behörighetsproblem. |
401.5 | Auktorisering 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. |