HTTP 401-Fehler vs HTTP 403-Fehler - Statuscode-Antworten erklärt

Wir haben den 403 (verbotenen) HTTP-Fehlercode bereits ausführlich behandelt, aber er hat auch ein nahezu identisches Geschwister.

Was genau ist der Unterschied zwischen den Statuscodes 401 (nicht autorisiert) und 403 (verboten)? Sicher bedeuten sie dasselbe? Lass uns genauer hinschauen!

RFC-Standards

Der aktuellste RFC-Standard, der 401 (nicht autorisiert) definiert, ist RFC 7235

Der Statuscode 401 (nicht autorisiert) zeigt an, dass die Anforderung nicht angewendet wurde, da keine gültigen Authentifizierungsdaten für die Zielressource vorliegen ... Der Benutzeragent KANN die Anforderung mit einem neuen oder ersetzten Feld für den Autorisierungsheader wiederholen.

Während 403 (Verboten) zuletzt in RFC 7231 definiert wurde

Der Statuscode 403 (Verboten) gibt an, dass der Server die Anforderung verstanden hat, sich jedoch weigert, sie zu autorisieren ... Wenn in der Anforderung Authentifizierungsdaten angegeben wurden, betrachtet der Server diese als unzureichend, um Zugriff zu gewähren.

Häufige Ursachen

Wie im vorherigen Artikel erwähnt, kann der Fehler 403 auftreten, wenn sich ein Benutzer angemeldet hat, jedoch nicht über ausreichende Berechtigungen für den Zugriff auf die angeforderte Ressource verfügt. Beispielsweise kann ein generischer Benutzer versuchen, eine Administratorroute zu laden.

Die offensichtlichste Zeit, in der ein 401-Fehler auftritt, ist, wenn Sie sich überhaupt nicht angemeldet oder das falsche Kennwort angegeben haben.

Dies sind die beiden häufigsten Ursachen für dieses Fehlerpaar.

Weniger häufige Ursachen

Es gibt jedoch einige Fälle, in denen dies nicht ganz so einfach ist.

403-Fehler können aufgrund von Einschränkungen auftreten, die nicht vollständig von den Anmeldeinformationen des angemeldeten Benutzers abhängen.

Beispielsweise kann ein Server bestimmte Ressourcen gesperrt haben, um nur den Zugriff von einem vordefinierten Bereich von IP-Adressen aus zuzulassen, oder Geoblocking verwenden. Letzteres kann möglicherweise mit einem VPN umgangen werden.

401 Fehler können auftreten, selbst wenn der Benutzer die richtigen Anmeldeinformationen eingibt. Dies ist selten und möglicherweise nur bei der Entwicklung Ihrer eigenen authentifizierten Backends der Fall. Wenn der Autorisierungsheader jedoch fehlerhaft ist, wird ein 401 zurückgegeben.

Beispielsweise könnten Sie ein JWT (JSON Web Token) haben, das Sie in den Anforderungsheader aufnehmen möchten, das das Format erwartet Authorization: Bearer eyJhbGci......yJV_adQssw5c. Wenn Sie das Wort "Träger" vor dem JWT vergessen würden, würden Sie auf den Fehler 401 stoßen.

Ich bin selbst auf dieses Problem gestoßen, als ich APIs getestet habe, die sich in der Entwicklung mit Postman befinden, und die richtige Syntax für Auth-Header vergessen habe!

Das ist es

Ich hoffe, dies beseitigt die Verwirrung um diese sehr ähnlichen Fehler.

Wenn Sie dies hilfreich fanden oder etwas, das hier angesprochen wurde, in Frage stellen oder erweitern möchten, können Sie mich gerne auf Twitter @JacksonBates kontaktieren.