Ich verstehe nicht: Wie können Webserver und Tracker wie Google Analytics Verweise verfolgen?
Ist es Teil von HTTP?
Ist es ein (un) spezifiziertes Verhalten der Browser?
Offenbar jedes Mal, wenn Sie auf einen Link auf einer Webseite klicken, wird die ursprüngliche Webseite der Anfrage entsprechend weitergeleitet.
Was ist der genaue Mechanismus dahinter? Ist es durch irgendeine Spezifikation spezifiziert?
Ich habe ein paar Dokumente gelesen und habe mit meinem eigenen Tomcat-Server und meinem eigenen Google Analytics-Konto gespielt, aber ich verstehe nicht, wie die "Magie" passiert.
Bonusfrage: Wenn ich auf meiner eigenen Website (von Tomcat bedient) einen Link zu einer anderen Site anlege, sieht die andere Seite meine Website als "Referrer", ohne dass ich etwas Besonderes in Tomcat mache?
Referer (in der Spezifikation falsch geschrieben) ist ein HTTP-Header. Es ist ein Standard-Header, den alle wichtigen HTTP-Clients unterstützen (auch wenn einige Proxy-Server und Firewalls so konfiguriert werden können, dass sie entfernt oder beschädigt werden). Wenn Sie auf einen Link klicken, sendet Ihr Browser unter anderem eine HTTP-Anfrage, die die angeforderte Seite und die Seite enthält, auf der der Link gefunden wurde.
Da dies ein Client / Request-Header ist, ist der Server irrelevant. Wenn Sie also auf einen Link auf einer Seite auf Ihrem eigenen Server klicken, wird die URL der Seite an den Server der anderen Site gesendet, obwohl Ihr Server dies nicht tut von dieser anderen Seite abhängig von Ihrer Netzwerkkonfiguration zugänglich sein.
Ein Detail, das zu den bereits gemachten Aussagen über Browser hinzugefügt werden soll: HTTPS ändert das Verhalten etwas. Ich bin mir nicht bewusst, ob es in irgendeiner Spezifikation ist, aber wenn Sie von HTTPS zu HTTP springen, und wenn Sie in der gleichen Domain bleiben oder zu verschiedenen Domains gehen, dann wird manchmal der Referrer nicht gesendet. Ich kenne die genauen Regeln nicht, aber ich habe das in der Wildnis beobachtet. Wenn es eine Spezifikation oder Beschreibung darüber gibt, wäre es großartig.
EDIT: ok, der RFC sagt einfach:
Clients SOLLTEN kein Referer-Header-Feld in einer (nicht sicheren) HTTP-Anfrage enthalten, wenn die verweisende Seite mit einem sicheren Protokoll übertragen wurde.
Wenn Sie also von der HTTPS-Seite zu einer HTTP-Verbindung wechseln, wird die Referrer-Information nicht gesendet.
Von: Ссылка
Das Referrer-Feld ist ein optionaler Teil der HTTP-Anfrage gesendet von der Browser-Programm zum Webserver.
Von RFC 2616:
Das Referer [sic] Request-Header-Feld ermöglicht dem Client, z der Vorteil des Servers, die Adresse (URI) der Ressource, aus der die Anfrage-URI wurde erhalten (die "Referrer", obwohl der Header Feld ist falsch geschrieben.)
Ihr Browser übergibt den Referrer bei jeder Seitenanfrage.
Es scheint ungewöhnlich, dass JavaScript auch darauf zugreifen kann, aber es tut es.
"Das Referrer-Feld ist ein optionaler Teil der HTTP-Anfrage, die vom Browser-Programm an den Webserver gesendet wird."
Wenn Sie auf einen Link klicken, fügt der Browser der Anfrage den Header Referer
hinzu. Es ist ein Teil von HTTP . Sie können mehr darüber hier lesen.
Tags und Links html http-referer