O referenciador é passado de HTTPS para HTTP em alguns casos ... Como?

17

Em teoria, os navegadores não transmitem informações de referência dos sites HTTPS para HTTP. E, na minha experiência, isso sempre foi verdade. Mas acabei de encontrar uma exceção e quero entender por que funciona para que eu possa usá-la também.

Pesquise "qual é o meu referenciador" em https://www.google.ca/,
por exemplo: https://www.google.ca/search?q=what+is+my+referer

Existem alguns sites que mostrarão o referenciador. Todos eles parecem "funcionar" quando não deveriam. Por exemplo, clique no www.whatismyreferer.com. Eu recebo:

 Your referer:
 https://www.google.ca/

Observe que, às vezes, raramente, recebo "sem referência" como resultado. Volte e clique no link novamente e "funcionará" na próxima vez.

Isso não deveria acontecer. www.whatismyreferer.com não é um site HTTPS. O cabeçalho do referenciador não deve estar sendo passado, mas é.

O que está acontecendo aqui e como posso fazer o mesmo no meu site HTTPS nos sites HTTP aos quais estou vinculando?

Ravisorg
fonte
1
Devo observar que eu estou usando o Chrome no Windows, se isso faz alguma diferença (por exemplo: se outras pessoas estão vendo resultados diferentes em diferentes navegadores / OSS)
ravisorg
Esse comportamento não é mais verdadeiro.
Flimm
@ravisorg, isso não deveria ser publicado em S / O?
Pacerier
O Google agora retorna um link HTTPS, portanto o teste não é mais válido :-(
Silas S. Brown

Respostas:

4

Esse é o comportamento padrão.

https://tools.ietf.org/html/rfc2616#section-15.1.3 diz

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

portanto, se seu cliente estiver fazendo isso, ele estará violando o padrão.

então, novamente, o google é o padrão, e eles podem fazer o que quiserem :-)

johnshen64
fonte
1
"Deveria" significa opcional, certo?
Pacerier 14/05
Sim, eu acho que sim, opcional.
precisa saber é o seguinte
4
Como é opcional, por que você diz que está violando o padrão?
Pacerier
1
Até agora 2616 está obsoleto. 7231 A Seção 5.5.2 diz "Um agente do usuário NÃO DEVE enviar um campo de cabeçalho de Referenciador em uma solicitação HTTP não segura se a página de referência foi recebida com um protocolo seguro". No entanto, ele não especifica o que os agentes devem fazer para solicitações HTTP protegidas.
Peter
1

Parece ser algo que o javascript na página do google está fazendo. Não o vejo no firefox com o noscript ativado e paro de vê-lo no Chrome no Windows se eu desativar o javascript. Eu não sei o que especificamente, porque eu não cavei mais fundo do que isso.

Etan Reisner
fonte
Não, não é relacionado a javascript (pensei nisso e verifiquei antes de perguntar). Parece que é uma nova tag <meta> que o Chrome está seguindo.
Ravisorg 2/07
Desabilitar o javascript de maneira confiável evita que o referenciador funcione aqui. Eu não sei. Talvez mais de uma coisa esteja envolvida aqui.
Etan Reisner
Isso é muito interessante - vou experimentar mais com isso. Obrigado pelo feedback!
Ravisorg 2/07
0

<meta> O nome do atributo do rótulo possui novas regras de referenciador, que controlam o conteúdo do cabeçalho HTTP do referenciador HTTP anexado a qualquer solicitação enviada a partir deste documento.

Para mais informações, consulte aqui: Política de Referenciadores RFC

leozhang2018
fonte
É o mesmo que a resposta já aceita ?!
DocRoot
-2

É porque, quando você clica no link, é redirecionado de https://www.google .... para http://www.google ... e depois é redirecionado para www.whatismyreferer.com

E como você disse, entre o site http o remetente é transmitido.

Você pode verificar isso com uma extensão do Firefox

user2299634
fonte
2
Você está adivinhando, ou você está baseando isso de fato? Porque não vejo isso acontecendo do meu lado. Clicar no link envia para um redirecionamento HTTPS no google.ca e depois no domínio final. Eu nunca atingi um URL não https até chegar a (por exemplo) www.whatismyreferer.com. Observe também que o referenciador especifica especificamente httpS://www.google.ca , não http.
Ravisorg
Sim, esta resposta parece estar incorreta.
ceejayoz
Aqui está o despejo dos cabeçalhos http: pastebin.com/Y1HJyJ87 Acabei de remover o download de recursos (como o google sugere e outras coisas do ajax) e dados relacionados a cookies. Mas tenho que admitir que, quando tentei várias vezes, o Google se comportou de maneira diferente ... Às vezes, usando apenas https, portanto, não permitindo que o site me mostre meu referenciador. Apenas tente por si mesmo
user2299634