Resumo

  • A RFC 2397 definiu data: para pequenos dados “imediatos”, com tipo de mídia opcional, marcador ;base64 opcional, uma vírgula e os dados.
  • Quando os bytes viajam na URL, o controle sai do caminho de recuperação remota e passa ao consumidor, ao manipulador de mídia e ao limite do buffer.

Uma URL comum promete uma viagem: o cliente lê o local, consulta algo externo e recebe uma representação. A RFC 2397 encurtou o percurso. Em data:[<mediatype>][;base64],<data>, a mesma cadeia que normalmente aponta para fora também leva aquilo que será lido.

O texto chamou isso de “endereçamento imediato”. Não existe um servidor minúsculo atrás da vírgula. Para o item incorporado, o consumidor separa declaração e carga, recompõe os octetos e os interpreta conforme o tipo de mídia. Ponteiro e mercadoria tornam-se uma única entrada serializada.

As omissões são definidas. Sem tipo de mídia, vale text/plain;charset=US-ASCII; é possível omitir text/plain e informar só o charset. ;base64, sem sinal de igual, escolhe base64 e por isso não é um parâmetro comum de Content-Type. Sem essa marca, caracteres seguros representam octetos diretamente e os demais usam %xx. Base64 não cifra, autentica nem concede permissão.

O esquema não tem forma relativa. Uma referência relativa toma o endereço-base do contexto; data: já entrega tipo e conteúdo. Um mecanismo herda um endereço, o outro carrega seus próprios bytes.

A RFC limita o caso de uso a valores curtos. Ela cita as restrições SGML do HTML 2.0: 1.024 caracteres em um literal de atributo, 2.100 na soma dos atributos de uma tag e 2.100 na tag inteira. Até o pequeno GIF do exemplo aparece perto do limite útil. Esses números não são um teto universal de data:; revelam que sintaxe, recipiente e alocação podem suportar tamanhos diferentes.

A seção de segurança mostra onde fica o poder. Um proxy de firewall pode bloquear a busca externa de certo tipo de mídia. É mais difícil aplicar o mesmo filtro a conteúdo já incluído na URL. Assim, o aplicativo não deve interpretar um tipo proibido por sua configuração. A porta efetiva pertence ao componente que transforma octetos em comportamento.

O documento também dizia que o efeito de valores muito longos era desconhecido e que alguns programas poderiam reagir mal ao ultrapassar o buffer alocado. Há dois testes: o tipo é permitido? O tamanho pode ser processado com segurança? A ausência de uma busca externa não responde a nenhum deles.

A proposta original era de agosto de 1995. O histórico registra VRML, propostas de dados embutidos em HTML, produtos comerciais e parâmetros de objetos Java e ActiveX. O desenho foi refinado: tornou-se possível omitir o tipo, o indicador base64 ficou mais compacto e quoted-printable saiu porque %xx já bastava.

Os errata posteriores têm pesos diferentes. Duas correções Verified trocam o impossível %fg e substituem o urlchar inexistente por uric. As ambiguidades sobre parâmetros com aspas e delimitadores permanecem Reported ou Held for Document Update, não como norma aprovada. A proposta de trocar toda ocorrência de “URL” por “URI” foi Rejected porque o termo original era historicamente correto.

A lição da RFC 2397 é sobre controle. Remover um intermediário não elimina autoridade; concentra-a no software que analisa, decodifica, interpreta e autoriza. Quanto menor o caminho, mais explícita deve ser a fronteira local.

Fontes