403 Forbidden

Der Client ist bekannt, darf das aber nicht.

Wann du ihn verwendest

Angemeldet, aber ohne Berechtigung.

Häufige Ursachen und Lösungen

Auf Webservern bedeutet 403 meist, dass das Dateisystem oder die Konfiguration den Zugriff verweigert. nginx gibt ihn zurück, wenn sein Worker-Benutzer eine Datei nicht lesen oder einen übergeordneten Ordner nicht durchqueren kann (er braucht x auf jedem Verzeichnis im Pfad), wenn ein Ordner keine Index-Datei hat und autoindex aus ist, oder bei einer deny-Regel. Das Fehlerlog sagt, was zutrifft: „permission denied“ oder „directory index is forbidden“.

Weitere Quellen: eine WAF oder Cloudflare, die die Anfrage blockiert (achte auf eine Ray ID auf der Fehlerseite), Bot-Regeln, die den User-Agent von curl ablehnen, die CSRF-Prüfung von Django, eine abgelaufene vorsignierte S3-URL oder S3, das bei fehlenden Objekten 403 statt 404 liefert, wenn dem Aufrufer s3:ListBucket fehlt. In APIs bedeutet 403 gültige Zugangsdaten ohne Berechtigung: Prüfe Rollen, OAuth-Scopes und den Besitz der Ressource.

Client-Fehler (4xx)

4xx-Codes sind Client-Fehler: Die Anfrage selbst ist fehlerhaft, nicht autorisiert oder verweist auf etwas, das es nicht gibt. Dieselbe Anfrage erneut zu senden hilft nicht.

So sieht es aus

HTTP/1.1 403 Forbidden

So sendest du ihn

Node.js / Expressres.status(403).end()
Python / Flaskreturn '', 403
nginxreturn 403;

So prüfst du ihn

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/

HTTP-Statuscodes öffnen