401 heißt nicht authentifiziert, 403 heißt authentifiziert, aber nicht erlaubt. Beantworte vier Fragen zu einer Anfrage und erhalte den richtigen Status mit Headern und Code.
Gib 401 Unauthorized zurück, wenn die Anfrage keine gültigen Zugangsdaten hat: kein Token, eine abgelaufene Session, eine ungültige Signatur. Ein Login könnte das beheben, und die Antwort muss einen WWW-Authenticate-Header enthalten. Gib 403 Forbidden zurück, wenn du weißt, wer der Aufrufer ist, und er das trotzdem nicht darf. Ein erneutes Anmelden ändert dann nichts.
Unauthorized und Forbidden im Vergleich
Beantworte vier Fragen zu der Anfrage, die dein Server ablehnt. Die Auswahl liefert den Status, den du senden solltest, den passenden Header und eine einzeilige Begründung für einen Code-Kommentar. Sie deckt auch den Fall ab, in dem du lieber nicht zugeben willst, dass die Ressource existiert.
401 sagt, dass der Server nicht weiß, wer du bist, oder den Nachweis, den du geschickt hast, nicht akzeptiert hat. 403 sagt, dass er weiß, wer du bist, und die Antwort trotzdem nein lautet.
Ja. Laut RFC 9110 muss ein Server, der eine 401-Antwort erzeugt, mindestens ein WWW-Authenticate-Headerfeld mit einer Challenge senden, etwa Bearer bei Token-APIs.
401. Die Zugangsdaten sind nicht mehr gültig, und neue würden das Problem lösen. Eine Bearer-Challenge kann das mit error="invalid_token" mitteilen.
Ja. Die Spezifikation erlaubt einem Server, 404 statt 403 zu senden, um zu verbergen, ob die Ressource existiert. Das ist eine gängige Wahl für IDs, die anderen Nutzern gehören.
Das kann sein. Server senden 403 bei jeder Ablehnung, die sie für diese Anfrage als endgültig betrachten: IP-Regeln, fehlende Dateirechte, eine Firewall-Regel oder eine fehlgeschlagene Rollenprüfung. Der Antworttext oder das Serverlog sagt meist, was davon zutrifft.
verifyToken steht für deine eigene Session- oder JWT-Prüfung. Die Reihenfolge ist wichtig: erst authentifizieren, dann autorisieren.
Ein Codepfad schickt den Nutzer zur Anmeldung, der andere erklärt die Ablehnung.
Ja
Nein
Hatte die Anfrage Zugangsdaten dabei (Session-Cookie, Token, Authorization-Header)?
Waren diese Zugangsdaten gültig und nicht abgelaufen?
Darf dieser Aufrufer diese Aktion auf dieser Ressource ausführen?
Sollen Aufrufer ohne Zugriff nicht erfahren, dass die Ressource existiert?
Sende das
Niemand ist angemeldet. Fordere mit einer Challenge Zugangsdaten an.
Zugangsdaten kamen an, wurden aber abgelehnt. Neue würden das Problem lösen.
Der Aufrufer ist bekannt, hat aber keine Berechtigung. Erneutes Anmelden hilft nicht.
Dem Aufrufer fehlt die Berechtigung, und du willst lieber nicht verraten, dass die Ressource existiert.
Authentifiziert und berechtigt. Bearbeite die Anfrage.
Nicht gefragt, weil eine frühere Antwort den Status bereits festgelegt hat.
Kostenlos starten · Keine Kreditkarte nötig