Ist es eine Möglichkeit, HTTP-Verweisinformationen im Anforderungsheader zu entfernen oder auszublenden? ich möchte http referrer-informationen von benutzern entfernen, die zu einer anderen Site gehen, und dabei ein Skript verwenden, das möglicherweise in Javascript Python oder Django enthalten ist
beispiel:
Host slogout.espncricinfo.com
User-Agent Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip, deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection keep-alive
Referer http://slogout.espncricinfo.com/index.php?page=index&level=login
Ab 2015 verhindern Sie das Senden der Referer-Kopfzeile:
Fügen Sie dies einfach in den Kopfbereich der Webseite ein:
<meta name="referrer" content="no-referrer" />
Dies funktioniert sowohl für Links als auch für Ajax-Anfragen durch JavaScript-Code auf der Seite.
Andere gültige meta
-Optionen sind:
<meta name="referrer" content="unsafe-url" />
<meta name="referrer" content="Origin" />
<meta name="referrer" content="no-referrer-when-downgrade" />
<meta name="referrer" content="Origin-when-cross-Origin" />
• Sehen Sie hier, ob es für Ihren Browser funktioniert: http://caniuse.com/#feat=referrer-policy
• Spezifikationen finden Sie hier: http://w3c.github.io/webappsec/specs/referrer-policy/
Beachten Sie auch, dass Browser jetzt den Header Origin
senden (mit CORS-Anforderungen und POST -Anfragen siehe hier: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin ) die Domäne und Port enthält und, soweit ich weiß, nicht entfernt werden kann. Wenn Sie <meta name="referrer" content="Origin" />
verwenden, enthält der Referrer ähnliche Informationen wie der Origin
-Header. Dies ist aus Sicht der Privatsphäre bereits gut, da die genaue Seite des Benutzers ausgeblendet wird.
Update:
Wenn Sie den Verweis nur mithilfe von JavaScript entfernen möchten, können Sie das entsprechende Meta-Tag unmittelbar vor der Ajax-Anforderung dynamisch hinzufügen. Dieses JavaScript fügt <meta name="referrer" content="no-referrer" />
zum Kopfbereich der Webseite hinzu:
var meta = document.createElement('meta');
meta.name = "referrer";
meta.content = "no-referrer";
document.getElementsByTagName('head')[0].appendChild(meta);
Es gibt eine Cross-Browser-Lösung in Javascript, die Iframes
verwendet, die dynamisch erstellt wurde. Ein Proof-of-Concept überprüfen (Haftungsausschluss: Es wird eine kleine JS-Lib verwendet, die für diesen Zweck codiert ist).
Wenn Sie nur die vollständige URL ausblenden möchten und es Ihnen nichts ausmacht, Ihren Domainnamen offen zu halten, erledigt dieser kleine Javascript-Code die Aufgabe.
Ihr Benutzer ist bei example.com/secret_url_we_want_to_hide
, Ihr Benutzer klickt auf einen Link, der ihn an google.com
senden soll. Anstelle von <a href="http://google.com">Go to Google</a>
verwenden wir jedoch Folgendes:
a href="http://example.com/redirect.html#http://google.com">Go to Google</a>
Dabei ist /redirect.html
eine HTML-Seite, die Folgendes enthält: (Bearbeiten: Bitte sehen Sie das Update!)
<html><head></head><script>
window.location.replace(location.hash.substring(1));
</script></html>
Google.com zeigt http://example.com/redirect.html
im refererer-Tag und niemals den tatsächlichen example.com/secret_url_we_want_to_hide
.
UPDATE:
Firefox hat einen Fehler mit location.hash, die Problemumgehung lautet wie folgt:
<html><head></head><script>
workaround_hash=location.href.split('#').splice(1).join('#');
window.location.replace(workaround_hash);
</script></html>
Es gibt verschiedene Mechanismen, um dies zu tun, je nachdem welche Browserversion Sie verwenden. Bei einem beliebigen Browser können Sie, wenn das Ziel über HTTP ist, den Ursprung "waschen", indem Sie auf eine HTTPS-Seite umleiten, die dann zur Zielseite navigiert.
Bei IE können Sie die Navigation mit JavaScript (z. B. window.open) durchführen, wodurch der Referer unterdrückt wird. Oder Sie können META Refresh verwenden, aber das kostet Perfektion. WebKit-basierte Browser finden Sie unter NoReferrer LINK REL-Option: http://www.webkit.org/blog/907/webkit-nightlies-support-html5-noreferrer-link-relation/
Ich hatte nach einer ähnlichen Lösung gesucht, den Referrer leer gelassen, aber nur, um einmalige Besuche von einer verweisenden Website zu zählen. Das Problem, das ich hatte, war, dass, wenn jemand meine Website über einen bestimmten Link besuchte, der Besuchsschalter hoch wurde, aber wenn dieser die Seite aktualisiert hatte, war der Besucherzähler immer noch hoch.
Ich habe Google dazu verwendet, mehrere Ressourcen zu diesem Thema aufzurufen. Ja, es war sehr schwierig, die Antwort zu finden, bis mich jemand darauf hinwies, auf php.net nach einer Lösung zu suchen.
Ich habe die Lösung gefunden
header('Refresh: 0; url=index.php');
Aber gerade der obige Code ist keine Lösung. Lösung liegt in der Platzierung. Hier ist der vollständige Code:
[email protected]$_SERVER[HTTP_REFERER];
$domain = parse_url($ref, PHP_URL_Host);
If ($domain === "google.com")
{
header('Refresh: 0; url=index.php'); //Resets header info to Host site so that on page refresh, the hit counter does not
} // increase but increases only when someone visits from google url again
Nach der "Aktualisierung" werden die Header-Informationen in die der Host-Site geändert. Bei der Seitenaktualisierung wird die "Wenn" -Anweisung nicht überprüft und der Trefferzähler wird nicht erhöht.
Sie können Ihren Trefferzähler in den IF-Block setzen. Sie können auch verschiedene Parameter programmieren, um leere Treffer auf Ihrer Website zu protokollieren, und verschiedene Parameter, um alle Seiten/Seitenaufrufe zu protokollieren.
Ich hoffe es hilft.....
Ihre Annahme, auf den Referer-Header über Javascript zuzugreifen, ist nicht möglich. Genau wie der User-Agent-Header in http kann auf Verweise usw. nicht mit Javascript zugegriffen werden. Die Werte für diese Header werden vom Browser übermittelt. Was Sie tun können, ist eine knifflige Arbeit, wenn Sie es brauchen.
Es gibt eine andere Methode: history.replace () - Methode , um die Abfragezeichenfolge auszublenden. Wenn Sie beispielsweise http://example.com/search?q=100
durch http://example.com/search
ersetzen möchten, können Sie dies folgendermaßen tun:
history.replace(null,null,'search')
Hoffe das hilft! : D
<meta name="referrer" content="no-referrer"/>
Wenn Sie den obigen Code auf Ihrer Seite einfügen, werden für alle ausgehenden Links (Klicks der Benutzer) keine Referrer-Informationen gesendet