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 ForbiddenSo sendest du ihn
| Node.js / Express | res.status(403).end() |
|---|---|
| Python / Flask | return '', 403 |
| nginx | return 403; |
So prüfst du ihn
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/