403 Forbidden

Le client est identifié mais n’a pas le droit de faire cette action.

Quand l’utiliser

Connecté, mais sans les droits nécessaires.

Causes courantes et solutions

Sur les serveurs web, 403 signifie généralement que le système de fichiers ou la configuration refuse l’accès. nginx le renvoie quand son utilisateur worker ne peut pas lire un fichier ou traverser un dossier parent (il lui faut x sur chaque répertoire du chemin), quand un dossier n’a pas de fichier index et qu’autoindex est désactivé, ou en cas de règle deny. Le log d’erreurs précise lequel : « permission denied » ou « directory index is forbidden ».

Autres sources : un WAF ou Cloudflare qui bloque la requête (cherchez un Ray ID sur la page d’erreur), des règles anti-bots qui rejettent le user agent de curl, la vérification CSRF de Django, une URL S3 présignée expirée, ou S3 qui répond 403 au lieu de 404 pour les objets manquants quand l’appelant n’a pas s3:ListBucket. Dans les API, 403 signifie des identifiants valides sans la permission nécessaire : vérifiez les rôles, les scopes OAuth et la propriété des ressources.

Erreur client (4xx)

Les codes 4xx sont des erreurs client : la requête elle-même est incorrecte, non autorisée ou vise quelque chose qui n’existe pas. Renvoyer la même requête ne servira à rien.

À quoi ça ressemble

HTTP/1.1 403 Forbidden

Comment l’envoyer

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

Comment le vérifier

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

Ouvrir l’outil Codes de statut HTTP