Resumo

  • A parte depois de # fica separada do endereço usado para buscar o recurso; o navegador a interpreta conforme o material recebido.
  • A técnica começou com os pontos de ancoragem do HTML e chegou a intervalos de linhas e caracteres em arquivos de texto.

Mandar a página inicial de um relatório de cem páginas é uma forma elegante de passar trabalho adiante. Mandar o endereço com # e um destino é oferecer a página já aberta no trecho certo. O sinal cabe na última posição do URL, mas muda a coreografia: o servidor entrega o documento, quem escreve o link indica onde olhar, e o navegador faz a aproximação.

A divisão aparecia no RFC 1808, de junho de 1995. Ao resolver um URL relativo, o algoritmo separa # e o fragmento antes de continuar a análise do endereço. No mesmo ano, o HTML 2.0 descrito no RFC 1866 registrou o uso mais conhecido: um #fragment alcança uma âncora no documento, identificada então pelo atributo NAME de um elemento A. A página inteira podia chegar pela rede; a atenção do leitor não precisava começar na primeira linha.

Em uma nota de arquitetura de abril de 1997, Tim Berners-Lee explicou que o servidor fornece uma representação e que o cliente entrega o fragmento ao programa capaz de entender aquele tipo de mídia. O servidor HTTP não recebe o fragmento. Ele ainda observou que a palavra “fragmento” é apertada demais: o sufixo pode indicar uma parte, uma visão ou outra coisa definida pelo formato. A imagem de um marcador de livro ajuda; a gramática é mais ampla.

O RFC 3986, publicado em 2005, formulou a ideia como referência indireta: por meio de um recurso principal, o fragmento identifica um recurso secundário. O significado depende do tipo de mídia da representação obtida. Há uma consequência editorial nessa regra. Quem cita pode escolher um ponto específico em material existente sem pedir que o editor crie uma nova rota no servidor para cada parágrafo. O editor publica o conteúdo; o autor da referência decide qual passagem merece a seta.

A seta também funciona fora do HTML. O RFC 5147, de 2008 definiu fragmentos para text/plain com posições e intervalos de linhas ou caracteres. Um arquivo de texto simples não tem os IDs dos elementos HTML, mas ainda pode ter um trecho localizável. O mesmo sinal passa a usar um mapa adequado à espécie de documento encontrada.

O limite segue claro no RFC 9110, a semântica atual do HTTP: o fragmento fica fora do URI de destino enviado na requisição. O servidor recebe o pedido pelo recurso; o cliente interpreta o sufixo depois de receber a representação. Se o editor mover ou renomear a âncora, o marcador antigo pode perder o lugar. Nomes estáveis dentro de documentos tornam esses encontros mais duradouros.

O # é uma pequena licença para discordar da ordem de apresentação de uma página. Seu autor pode querer que todos entrem pela porta da frente. Quem oferece um link pode levar o leitor direto à prateleira onde está a frase que importa.