403 Forbidden

El cliente es conocido, pero no tiene permiso para hacer esto.

Cuándo usarlo

Sesión iniciada, pero sin permiso.

Causas habituales y soluciones

En los servidores web, 403 suele significar que el sistema de archivos o la configuración deniegan el acceso. nginx lo devuelve cuando su usuario worker no puede leer un archivo o atravesar una carpeta superior (necesita x en cada directorio de la ruta), cuando una carpeta no tiene archivo de índice y autoindex está desactivado, o por una regla deny. El log de errores indica cuál: “permission denied” o “directory index is forbidden”.

Otras causas: un WAF o Cloudflare bloqueando la solicitud (busca un Ray ID en la página de error), reglas antibots que rechazan el user agent de curl, la comprobación CSRF de Django, una URL prefirmada de S3 caducada, o S3 respondiendo 403 en lugar de 404 para objetos que no existen cuando quien llama no tiene s3:ListBucket. En las API, 403 significa credenciales válidas sin permiso: revisa los roles, los scopes de OAuth y la propiedad del recurso.

Error del cliente (4xx)

Los códigos 4xx son errores del cliente: la solicitud en sí es incorrecta, no está autorizada o apunta a algo que no existe. Repetir la misma solicitud no servirá de nada.

Cómo se ve

HTTP/1.1 403 Forbidden

Cómo enviarlo

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

Cómo comprobarlo

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

Abrir Códigos de estado HTTP