Überprüfen Sie, ob Cookies von Drittanbietern aktiviert sind
Habe ich eine Anwendung, um zu überprüfen, ob der client-browser eine third-party-cookies aktiviert. Weiß jemand, wie man dies in JavaScript?
InformationsquelleAutor der Frage Maurits de Boer | 2010-08-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Technischen Hintergrund
Des Dritten sets & liest cookies über HTTP (nicht JavaScript).
Also brauchen wir zwei Anfragen an eine externe Domäne zu testen, ob Drittanbieter-cookies sind aktiviert:
Können wir nicht verwenden, XMLHTTPRequest-Objekt (Ajax) wegen der DOM-Sicherheits-Modell.
Natürlich können Sie nicht laden Sie beide Skripte parallel oder die zweite Anfrage gemacht werden kann vor der ersten Anfrage-Antwort-macht es wieder, und das test-cookie(s) nicht gesetzt wurden.
Code-Beispiel
Gegeben:
Den
.html
- Datei auf einer domain, undDen
.js.php
Dateien sind auf einer zweiten domain haben wir:Die HTML-test-Seite
Gespeichert
third-party-cookies.html
Der erste third-party JavaScript-Datei
Gespeichert
step1.js.php
Dies ist in PHP geschrieben, so dass wir cookies setzen darf, wie die Datei geladen wird. (Es kann natürlich in jeder Sprache geschrieben werden, oder selbst gemacht im server-config-files).
Die zweite third-party JavaScript-Datei
Gespeichert
step2.js.php
Dies ist in PHP geschrieben, so Lesen wir, cookies, server-Seite, bevor wir reagieren. Wir haben auch deaktivieren Sie die cookie, damit der test wiederholt werden kann (wenn Sie wollen, mess around mit browser-Einstellungen und versuchen Sie es erneut).
Die Letzte Zeile nutzt der ternäre operator zur Ausgabe eines literales Javascript
true
oderfalse
je nachdem, ob der test-cookie vorhanden war.Testen Sie es hier.
Zur Verfügung für Ihre Prüfung Vergnügen https://alanhogan.github.io/web-experiments/3rd/third-party-cookies.html.
(Als ein letzter Hinweis — verwenden Sie nicht den server von jemand anderem zu testen Drittanbieter-cookies ohne Ihre Erlaubnis. Könnte es brechen spontan oder injizieren malware. Und es ist unhöflich.)
InformationsquelleAutor der Antwort Alan H.
Hier ist eine Reine JS-Lösung setzt kein server-side-code, so kann es Arbeit von einem static CDN: https://github.com/mindmup/3rdpartycookiecheck - das erste Skript setzt den cookie in den code, dann leitet Sie an ein zweites Skript, das auf dem Postweg eine Nachricht an das übergeordnete Fenster.
Können Sie versuchen, eine live-version mit https://jsfiddle.net/tugawg8y/
client-Seite HTML:
client-side JS:
Natürlich, dies erfordert, dass der client JavaScript läuft, das ist ein Nachteil gegenüber den server-basierte Lösungen, auf der anderen Seite, ist es einfacher, und Sie wurden gefragt, über eine JS-Lösung.
InformationsquelleAutor der Antwort Gojko Adzic
Alan Lösung ist groß, aber Sie nicht haben, um den Einsatz von PHP oder anderen serverseitigen Programmiersprache.
Zumindest, wenn man nginx. 🙂
Dies ist eine Reine* nginx-server-side-Konfiguration für Alan ' s Lösung:
Nginx config start
Der erste third-party "JavaScript-Datei" - serviert von nginx
Das zweite Drittel-Partei "JavaScript-Datei" - serviert von nginx
Nginx config Ende
Seite Hinweise:
third-party-cookies.html
),server
Abschnitt (Rahmen) des config - ich habe es auf diese Weise für die halten es mehr "1:1" übersetzung.InformationsquelleAutor der Antwort Greg Dubicki
In der Theorie, Sie würden nur eine Seite haben, die rufen irgendwo ein thirdparty cookie und überprüfen Sie, ob das cookie bestehen. Jedoch, standard-browser-Sicherheit nicht erlauben, Skripte von Domäne A zu tun, nichts mit cookies, die auf Domänen B,C,etc... z.B. kann man nicht auf "fremde" cookies.
Wenn Sie einige bestimmte Verwendung im Sinn, wie etwa die überprüfung, ob Werbung geblockt werden (das würde auch verhindern, dass der 3rd-party-tracking-Cookies), können Sie überprüfen, ob der ad-server die Inhalte in das DOM der Seite, aber Sie konnte nicht sehen, ob das cookie da ist.
InformationsquelleAutor der Antwort Marc B