In einigen Fällen wird der Referer von HTTPS an HTTP übergeben. Wie?

17

Theoretisch geben Browser keine Referenzinformationen von HTTPS an HTTP-Sites weiter. Und meiner Erfahrung nach war dies immer wahr. Aber ich habe gerade eine Ausnahme gefunden und möchte verstehen, warum es funktioniert, damit ich es auch verwenden kann.

Suchen Sie unter https://www.google.ca/ nach "Was ist mein Referer?".
Beispiel: https://www.google.ca/search?q=what+is+my+referer

Es gibt einige Websites, auf denen Verweise angezeigt werden. Sie scheinen alle zu "arbeiten", wenn sie nicht sollten. Klicken Sie beispielsweise auf www.whatismyreferer.com. Ich bekomme:

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

Beachten Sie, dass ich manchmal, selten, als Ergebnis "kein Referer" erhalte. Gehen Sie zurück und klicken Sie erneut auf den Link, damit er beim nächsten Mal "funktioniert".

Das sollte nicht passieren. www.whatismyreferer.com ist eine Nicht-HTTPS-Site. Der Referer-Header sollte nicht übergeben werden, ist es aber.

Was ist hier los und wie kann ich dasselbe von meiner HTTPS-Site zu den HTTP-Sites machen, auf die ich verlinke?

Ravisorg
quelle
1
Ich sollte beachten, dass ich Chrome unter Windows verwende, wenn dies einen Unterschied macht (z. B. wenn andere Benutzer unterschiedliche Ergebnisse in verschiedenen Browsern / Betriebssystemen sehen)
ravisorg
Dieses Verhalten ist nicht mehr wahr.
Flimm,
@ Ravisorg, sollte dies nicht stattdessen auf S / O gepostet werden?
Pacerier
Google gibt jetzt einen HTTPS-Link zurück, sodass der Test nicht mehr gültig ist :-(
Silas S. Brown

Antworten:

4

Dies ist das Standardverhalten.

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

Clients DÜRFEN KEIN Referer-Header-Feld in eine (nicht sichere) HTTP-Anforderung aufnehmen, wenn die verweisende Seite mit einem sicheren Protokoll übertragen wurde.

Wenn Ihr Kunde dies tut, verstößt er gegen den Standard.

google ist der standard und sie können machen was sie wollen :-)

johnshen64
quelle
1
"Sollte" bedeutet optional richtig?
Pacerier
Ja, ich denke schon, optional.
Johnshen64
4
Warum, sagen Sie, verstößt es gegen den Standard, da es optional ist?
Pacerier
1
Inzwischen ist 2616 veraltet. 7231 Abschnitt 5.5.2 sagt: "Ein Benutzeragent DARF KEIN Referer-Headerfeld in einer ungesicherten HTTP-Anfrage senden, wenn die verweisende Seite mit einem sicheren Protokoll empfangen wurde." Es gibt jedoch nicht an, was Agenten für gesicherte HTTP-Anforderungen tun sollen.
Peter
1

Dies scheint etwas zu sein, das das Javascript auf der Google-Seite tut. Ich sehe es nicht in Firefox mit aktiviertem Noscript und sehe es in Chrome unter Windows nicht mehr, wenn ich Javascript deaktiviere. Ich weiß nicht was genau, da ich nicht tiefer gegraben habe.

Etan Reisner
quelle
Nein, es hat nichts mit Javascript zu tun (ich habe darüber nachgedacht und es überprüft, bevor ich gefragt habe). Offenbar handelt es sich um ein neues <meta> -Tag, dem Chrome folgt.
Ravisorg
Durch Deaktivieren von Javascript wird zuverlässig verhindert, dass der Referrer hier arbeitet. Ich weiß es nicht. Vielleicht ist hier mehr als eine Sache involviert.
Etan Reisner
Das ist sehr interessant - ich werde mehr damit experimentieren. Danke für die Rückmeldung!
Ravisorg
0

<meta> Der Attributname des Etiketts enthält neue Verweisregeln. Der Verweis steuert den Inhalt des HTTP-Verweis-HTTP-Headers, der an alle von diesem Dokument gesendeten Anforderungen angehängt wird.

Weitere Informationen finden Sie hier: RFC Referrer Policy

leozhang2018
quelle
Dies ist das Gleiche wie die bereits akzeptierte Antwort ?!
DocRoot
-2

Wenn Sie auf den Link klicken, werden Sie von https://www.google .... zu http://www.google ... weitergeleitet. Anschließend werden Sie zu www.whatismyreferer.com weitergeleitet

Und wie Sie sagten, zwischen http-Website wird der Referer übertragen.

Sie können dies mit einer Firefox-Erweiterung überprüfen

user2299634
quelle
2
Raten Sie, oder stützen Sie sich darauf? Weil ich nicht sehe, dass das an meinem Ende passiert. Durch Klicken auf den Link gelangen Sie zu einer HTTPS-Weiterleitung auf google.de und anschließend zur End-Domain. Ich habe nie eine Nicht-https-URL aufgerufen, bis ich (z. B.) www.whatismyreferer.com erreicht habe. Beachten Sie auch, dass der Referer ausdrücklich httpS://www.google.ca und nicht http angibt .
Ravisorg
Ja, diese Antwort scheint falsch zu sein.
Ceejayoz
Hier ist der Speicherauszug der http-Header: pastebin.com/Y1HJyJ87 Ich habe gerade den Ressourcen-Download (wie Google Suggest & andere Ajax-Inhalte) und die mit Cookies verbundenen Daten entfernt. Aber ich muss zugeben, dass sich Google bei mehreren Versuchen anders verhalten hat ... Manchmal wird nur https verwendet, daher kann mir die Website meinen Referrer nicht anzeigen. Versuchen Sie es
einfach