Jedes Mal, wenn eine Seite angefordert wird, bekomme ich den Referrer der Seite, von der sie kam. Ich muss nur Referrer von anderen Seiten verfolgen, ich möchte nicht von einer Seite zur anderen innerhalb meiner Website zu verfolgen. Wie kann ich das machen?Wie kann ich feststellen, ob der document.referrer von meiner eigenen Website stammt?
Antwort
document.referrer.indexOf(location.protocol + "//" + location.host) === 0;
Ursprünglich bei JavaScript - Am I the Referrer? geschrieben
Wenn jemand zum ersten Mal auf unsere Website kommt, speichern wir die Referrer in einem Cookie. Auf diese Weise können wir, wenn sie unsere Demo herunterladen, den ursprünglichen Referrer aus dem Cookie holen und wir erfahren, welche Websites bei der Werbung zu uns führen.
Natürlich zeigt jede nachfolgende Seite, die ein Besucher auf unserer Website besucht, den Referrer als unsere Website an. Wir wollen diese nicht. Was wir zuerst getan haben, um dies zu vermeiden, war die Suche nach dem Text "Luv" in der Referrer und wenn ja, nehmen wir an, dass das von unserer Website war. Das Problem damit ist, dass wir viele Referrer-URLs gefunden haben, die nun entweder als Suchbegriff oder Teil einer URL, die über Windward spricht, in Luv enthalten sind. (Das sind gute Nachrichten, das bedeutet, wir sind jetzt ein bekanntes Produkt.)
Das brachte mich zu unserem neuesten Ansatz. Dies sollte für jede Site funktionieren und nur Referrer von derselben Site ablehnen.
function IsReferredFromMe()
{
var ref = document.referrer;
if ((ref == null) || (ref.length == 0)) {
return false;
}
if (ref.indexOf("http://") == 0) {
ref = ref.substring(7);
}
ref = ref.toLowerCase();
var myDomain = document.domain;
if ((myDomain == null) || (myDomain.length == 0)) {
return false;
}
if (myDomain.indexOf("http://") == 0) {
myDomain = myDomain.substring(7);
}
myDomain = myDomain.toLowerCase();
return ref.indexOf(myDomain) == 0;
}
Bricht das nicht für 'https'? – Pureferret
@Pureferret - ja, muss auch mit https umgehen. Dies wurde im Jahr 2010 geschrieben, als öffentliche Websites fast alle http waren. –
Solutions arbeitet im Fall der Nicht Sub-Domain in Website im Fall von Sub-Domain präsentiert ist es dann müssen wir selbst kurz vor der Domäne überprüfen, ob all Sub-Domains vorgestellt:
document.referrer.replace("http://", '').replace("https://", '').split('/')[0].match(new RegExp(".*" +location.host.replace("www.", '')))
Diese Lösung fügt * vor der Domäne hinzu, um zu erkennen, dass die Unterdomäne aus derselben Domäne stammt.
document.referrer.includes(location.host);
- 1. Wie kann ich feststellen, woher meine Bewerbung stammt?
- 2. Wie kann ich feststellen, ob eine Website AJAX-Dienste anbietet?
- 3. Wie kann ich anhand von PHP feststellen, ob eine Anfrage vom Hosting-Server stammt?
- 4. Wie kann ich feststellen, ob ein erforderliches Modul von einem Edelstein stammt oder ein Kernmodul war?
- 5. Wie kann man feststellen, ob ein Methodenaufruf von der Testklasse
- 6. Wie füge ich Facebook Login zu meiner eigenen Website hinzu?
- 7. Wie kann ich feststellen, wie viele Benutzer meine Website besuchen?
- 8. aus meiner eigenen Website und nicht vermarktet
- 9. Wie kann ich feststellen, ob ein Webclient Werbung blockiert?
- 10. Wie kann ich mich bei Google Apps und meiner eigenen Website anmelden, ohne eine API bereitzustellen?
- 11. Wie kann ich feststellen, ob der Benutzer den Datagridview scrollt?
- 12. Wie kann ich feststellen, ob der Benutzer die Verbindung zu meiner Stripe Connect-App getrennt hat?
- 13. Wie kann der Unity-Interceptor feststellen, ob ein Anruf von WCF oder von einem internen Dienst stammt?
- 14. Wie kann ich feststellen, ob ein Kontextmenüelement bereits von meiner Chrome-Erweiterung erstellt wurde?
- 15. Wie kann ich in Python mithilfe von urllib feststellen, ob eine Website 404 oder 200 ist?
- 16. Wie kann ich feststellen, ob auf meiner Site ASP.NET MVC oder Web Forms ausgeführt wird?
- 17. Wie hostet man eine Versionskontrolle auf meiner eigenen Website
- 18. Wie kann ich feststellen, ob der Ladevorgang funktioniert?
- 19. Wie kann ich feststellen, ob ein Benutzer meine Website verlassen hat?
- 20. Wie kann ich feststellen, ob jemand von printPreview gedruckt hat?
- 21. Wie kann ich feststellen, ob scp von Perl verfügbar ist?
- 22. Wie kann ich feststellen, ob ich ein Speicherleck habe?
- 23. Kann ich ein Video von meiner eigenen Website auf YouTube hochladen?
- 24. Wie kann ich feststellen, ob eine Klasse serialisiert werden kann?
- 25. Wie kann ich meiner Website ein Google-Suchfeld hinzufügen?
- 26. Spontify Track innerhalb meiner eigenen Website mit spotify web api
- 27. Wie kann ich feststellen, ob eine vorherige Instanz meiner Anwendung ausgeführt wird?
- 28. Wie kann ich feststellen, ob Flash auf einer Website geladen ist?
- 29. Wie kann ich feststellen, ob etwas in meiner Checkbox ausgewählt ist?
- 30. Wie entferne ich den Ordnernamen von der URL meiner Website?
Wow, fragte die Frage, antwortete dann in weniger als 1 Minute mit einem Link zu Ihrer eigenen Website? – Martin
Ich denke, eine Lösung zu posten ist eine gute Sache. Ich bin mir ziemlich sicher, dass andere das gleiche Problem haben. –
das klingt doof – hoju