403 Forbidden

O cliente é conhecido, mas não tem permissão para fazer isso.

Quando usar

Autenticado, mas sem permissão.

Causas comuns e soluções

Em servidores web, o 403 geralmente significa que o sistema de arquivos ou a configuração nega o acesso. O nginx o retorna quando o usuário do worker não consegue ler um arquivo ou atravessar uma pasta pai (ele precisa de x em todos os diretórios do caminho), quando uma pasta não tem arquivo de índice e o autoindex está desligado, ou por uma regra deny. O log de erros diz qual é: “permission denied” ou “directory index is forbidden”.

Outras origens: um WAF ou a Cloudflare bloqueando a requisição (procure um Ray ID na página de erro), regras contra bots rejeitando o user agent do curl, a verificação de CSRF do Django, uma URL pré-assinada do S3 expirada, ou o S3 respondendo 403 em vez de 404 para objetos inexistentes quando quem chama não tem s3:ListBucket. Em APIs, 403 significa credenciais válidas sem permissão: verifique papéis, escopos OAuth e a propriedade do recurso.

Erro do cliente (4xx)

Os códigos 4xx são erros do cliente: a própria requisição está errada, não está autorizada ou aponta para algo que não existe. Repetir a mesma requisição não vai adiantar.

Como fica

HTTP/1.1 403 Forbidden

Como enviar

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

Como verificar

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

Abrir Códigos de status HTTP