2016-04-13 15 views
0

Wie funktioniert die referrer Eigenschaft von JavaScript? Überprüft es einfach die HTTP-Header-Daten und gibt aus, was dort gefunden wurde?Wie funktioniert die Referrer-Eigenschaft von JavaScript unter der Haube?

Die referer Eigenschaft wird in der folgenden Art und Weise zugegriffen:

var ref = document.referrer; 
console.log(ref); 

Auch ich bemerkte, dass die Referrer (Chrome Dev Tools->Network->Top HTTP Request->Referer) oft ohne Subdomains nur Domain-Namen abgezogen wird. Wenn beispielsweise ein Benutzer von www.facebook.com/stackoverflow kommt, ist sein Referer immer nur www.facebook.com. Warum ist das so?

+1

Lesen Sie immer die Dokumentation ... https://developer.mozilla.org/en-US/docs/Web/API/Document/referrer – evolutionxbox

+0

Vielen Dank! Ich habe die gesuchten Informationen nicht auf der verlinkten Seite gefunden. Um genau zu sein, gibt es nicht an, wie es den Referer unter die Haube gebracht hat (hat es in die Header geschaut?). Es gibt nur an, was es ist. URI kann sowohl www.facebook.com als auch www.facebook.com/stackoverflow sein. Also ich weiß immer noch nicht, was die richtige Antwort ist. Es tut mir leid, wenn Ihnen die Frage leicht zu beantworten scheint, aber aus Unerfahrenheit kann ich keine gute Erklärung finden. – sanjihan

+0

Die Eigenschaft 'document.referrer' gibt den Response Header Referrer-Wert zurück. Hier ist ein Beispiel, wie ich diese Seite von Google besuche: "DNT: 1 Referer: https://www.google.co.uk/ Accept-Encoding: gzip, deflate, sdch' – evolutionxbox

Antwort

1

Remember to always read the documentation.

Die document.referrer Eigenschaft gibt buchstäblich eine Zeichenfolge aus dem Request Header.

Hier ist ein Beispiel von mir diese Seite von Google besuchen:

GET /questions/36609134/how-does-javascripts-referrer-property-work-under-the-hood HTTP/1.1 
Host: stackoverflow.com 
Connection: keep-alive 
Pragma: no-cache 
Cache-Control: no-cache 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
Upgrade-Insecure-Requests: 1 
User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36 
DNT: 1 
Referer: https://www.google.co.uk/ 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: en-GB,en;q=0.8,en-US;q=0.6 

Für weitere Informationen über den Request-Header referer Besuch Wikipedia.

+0

Nochmals vielen Dank! Google hat normalerweise Abfragezeichenfolgen. Diese werden immer vom Referrer entfernt. Was logisch ist. Wie wäre es, wenn Sie von faceboook.com/SOquestion-Subdomain auf diese Frage kommen würden? Dann wird auch die Subdomain entfernt. Gibt es eine Erklärung, warum Subdomains vom Referrer entfernt werden? Ist das einfach eine Konvention, an die sich die Leute halten? – sanjihan

+0

Ich glaube nicht, dass es eine Konvention ist. Werfen Sie einen Blick auf Wikipedia (https://en.m.wikipedia.org/wiki/HTTP_referer), da hier der HTTP-Referer-Wert detailliert beschrieben wird. – evolutionxbox

+0

"Die document.referrer-Eigenschaft gibt im wahrsten Sinne des Wortes eine Zeichenfolge aus dem Antwortheader zurück" - das ist nicht der Inhalt der Dokumentation, die Sie verlinkt haben. Der einzige Beweis, den Sie angegeben haben, zeigt, dass die Werte bei gegebenen allgemeinen Bedingungen (Ausnahmen können vorhanden sein) gleich sind. – Quentin