Klient jest znany, ale nie ma uprawnień do tej operacji.
Kiedy go używać
Zalogowany, ale bez uprawnień.
Typowe przyczyny i rozwiązania
Na serwerach WWW 403 zwykle oznacza, że dostępu odmawia system plików lub konfiguracja. nginx zwraca go, gdy użytkownik, jako który działa jego worker, nie może odczytać pliku lub przejść przez folder nadrzędny (potrzebuje x na każdym folderze na ścieżce), gdy folder nie ma pliku index, a autoindex jest wyłączony, albo przy regule deny. Log błędów mówi, o który przypadek chodzi: „permission denied” lub „directory index is forbidden”.
Inne źródła: WAF lub Cloudflare blokujące żądanie (szukaj Ray ID na stronie błędu), reguły antybotowe odrzucające user agenta curla, sprawdzanie CSRF w Django, wygasły presigned URL S3 albo S3 odpowiadające 403 zamiast 404 dla brakujących obiektów, gdy wywołujący nie ma s3:ListBucket. W API 403 oznacza poprawne poświadczenia bez uprawnień: sprawdź role, zakresy OAuth i własność zasobu.
Błąd klienta (4xx)
Kody 4xx to błędy klienta: samo żądanie jest błędne, nieautoryzowane albo wskazuje na coś, czego nie ma. Ponowienie tego samego żądania nic nie da.
Jak to wygląda
HTTP/1.1 403 ForbiddenJak go wysłać
| Node.js / Express | res.status(403).end() |
|---|---|
| Python / Flask | return '', 403 |
| nginx | return 403; |
Jak go sprawdzić
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/