Tecnologias/04 - Armazenamento de Objetos/02 - Cloudflare R23 min
Acesso Público, URLs Assinadas e CORS no R2
Formas de acesso
| Forma | Como o cliente acessa |
|---|---|
| API S3 autenticada | Envia operações assinadas com credenciais do R2 |
| Binding em Worker | O Worker usa a API R2 no seu ambiente |
| URL assinada | Usa uma autorização temporária para uma operação sobre um objeto |
| Bucket público | Lê objetos por um endereço público habilitado |
A escolha define onde a aplicação verifica permissões. Um Worker pode aplicar uma regra de autorização antes de devolver conteúdo de um bucket privado.
Bucket público e domínio
O R2 permite expor um bucket por domínio próprio ou pelo endereço de desenvolvimento
r2.dev. O segundo tem limitação de taxa e é destinado a desenvolvimento. Domínios
próprios permitem integrar recursos de cache e controle de tráfego da Cloudflare.
Esses acessos são independentes: desligar um domínio não desliga automaticamente outro. Se um caminho público continuar habilitado, o objeto pode continuar acessível por ele, mesmo que a aplicação principal exija login. Referência: buckets públicos.
URL assinada
Uma URL assinada carrega uma autorização temporária vinculada à operação e ao objeto. Permite que o cliente faça um upload ou download sem receber a credencial usada para assinar as requisições.
1. O usuario solicita o download do relatorio 42.
2. A API verifica se ele pode acessar esse relatorio.
3. A API gera uma URL de GET para a chave correspondente.
4. O cliente baixa o arquivo diretamente do R2 dentro do prazo.
Quem obtém a URL pode usá-la durante sua validade. Ela não deve ser interpretada como um link automaticamente restrito à pessoa que o recebeu ou de uso único.
URLs assinadas S3 do R2 usam o domínio da API
<ACCOUNT_ID>.r2.cloudflarestorage.com; não funcionam diretamente em domínios próprios.
Referência: presigned URLs.
CORS
CORS informa ao navegador quais origens, métodos e cabeçalhos podem participar do acesso entre sites. Um upload feito por JavaScript no navegador pode exigir uma política que aceite sua origem, o método e os cabeçalhos enviados.
CORS não autentica o usuário nem protege o objeto contra clientes fora do navegador. Uma URL assinada válida e uma política CORS adequada resolvem partes diferentes do fluxo: autorização da operação e permissão de acesso pelo navegador. Referência: CORS no R2.
Aprofundamento aplicado
Upload direto com autorização na aplicação
Um fluxo de upload pode ter quatro participantes: navegador, API, armazenamento e processador do arquivo. A API primeiro verifica o usuário e escolhe a chave; só então assina a operação permitida. O cliente envia diretamente ao armazenamento e a aplicação verifica conclusão e metadados antes de publicar o arquivo como pronto.
Se a assinatura vincula cabeçalhos como Content-Type, o cliente precisa enviar os
valores correspondentes. Mudar método, caminho ou cabeçalho assinado pode invalidar
a requisição. O preflight CORS é outra etapa, feita pelo navegador.
Referência: URLs assinadas.
| Sintoma | Investigação inicial |
|---|---|
| Funciona fora do navegador, falha nele | CORS, origem e cabeçalhos |
| Assinatura rejeitada | Método, expiração, endpoint e campos assinados |
| Upload terminou, cadastro segue pendente | Confirmação e reconciliação na aplicação |
Exercício: registre a sequência de chamadas, incluindo OPTIONS quando houver
preflight. Resultado esperado: explique qual componente decide autorização e qual
controla a permissão do navegador para consumir a resposta.
Relacionado: 1. Cloudflare R2 · 3. API S3, Custos e Limitações do R2.
Parte de Cloudflare R2