Pergunta

Não entendo: como o servidor da web e rastreadores como o Google Analytics são capazes de rastrear referências?

Faz parte do http?

É um comportamento (não) especificado dos navegadores?

Aparentemente, toda vez que você clica em um link em uma página da web, a página da web original é passada ao longo da solicitação.

Qual é o mecanismo exato por trás disso? É especificado por algumas especificações?

Eu li alguns documentos e joguei com meu próprio servidor Tomcat e minha própria conta do Google Analytics, mas não entendo como acontece a "mágica".

Bônus (totalmente relacionada) Pergunta: Se, no meu próprio site (servido pelo Tomcat), coloquei um link para outro site, o outro site veja meu site como o "referenciador" sem que eu faça nada de especial no Tomcat?

Foi útil?

Solução

O referente (com erros de ortografia na especificação) é um cabeçalho HTTP. É um cabeçalho padrão que todos os principais clientes HTTP suportam (embora alguns servidores de proxy e firewalls possam ser configurados para retirá -lo ou gerenciá -lo). Quando você clica em um link, seu navegador envia uma solicitação HTTP que contém a página solicitada e a página na qual o link foi encontrado, entre outras coisas.

Como este é um cabeçalho de cliente/solicitação, o servidor é irrelevante e, sim, clicar em um link em uma página hospedada em seu próprio servidor resultaria em que o URL da página seja enviado ao servidor do outro site, embora seu servidor possa não estar necessariamente acessível A partir desse outro site, dependendo da sua configuração de rede.

Outras dicas

Um detalhe a acrescentar ao que já foi dito sobre como os navegadores enviam: o HTTPS altera um pouco o comportamento. Não sei se está em alguma especificação, mas se você pular de HTTPS para HTTP e se você permanecer no mesmo domínio ou ir para diferentes domínios, às vezes o referenciador não é enviado. Não conheço as regras exatas, mas observei isso na natureza. Se houver alguma especificação ou descrição sobre isso, seria ótimo.

EDIT: OK, a RFC diz claramente:

Os clientes não devem incluir um campo de cabeçalho do referente em uma solicitação HTTP (não segura) se a página de referência foi transferida com um protocolo seguro.

Portanto, se você passar da página HTTPS para um link HTTP, o INFO INFORMAÇÃO DE REFERÊNCIO não será enviado.

A partir de: http://en.wikipedia.org/wiki/http_referrer

O campo referenciador é uma parte opcional da solicitação HTTP enviada pelo programa do navegador para o servidor da Web.

Da RFC 2616:

O campo do cabeçalho de solicitação do referente [sic] permite que o cliente especifique, para o benefício do servidor, o endereço (URI) do recurso a partir do qual a solicitação-URI foi obtida (o "referenciador", embora o campo de cabeçalho esteja com ortografia.)

Se você solicitar uma página da Web usando um navegador, seu navegador enviará o cabeçalho do referente HTTP junto com a solicitação.

O seu navegador passa o referenciador com cada solicitação de página.

Parece incomum que o JavaScript também tenha acesso a isso, mas sim.

Sim, o navegador envia a página anterior nos cabeçalhos HTTP. Isso é definido na especificação HTTP/1.1:

http://www.w3.org/protocols/rfc2616/rfc2616-sec14.html#sec14.36

A resposta para sua pergunta é sim, pois o navegador envia o referente.

"O campo referenciador é uma parte opcional da solicitação HTTP enviada pelo programa do navegador para o servidor da Web".

http://en.wikipedia.org/wiki/http_referrer

Quando você clica em um link, o navegador adiciona um Referer Caminhão para o pedido. Isso é parte do http. Você pode ler mais sobre isso aqui.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top