Kameleoon ermoeglicht es Ihnen, Sitzungsdaten ueber alle Subdomains hinweg zu vereinheitlichen. In diesem Modus verfolgt Kameleoon Besucher ueber mehrere Subdomains innerhalb derselben Top-Level-Domain. Beispielsweise kann Kameleoon einen Besuch, der auf einer Subdomain begann und auf einer anderen fortgesetzt wurde, als einzelnen Besuch im lokalen Speicher erfassen. Kameleoon empfiehlt, diese Option zu aktivieren, um Sitzungsdaten ueber alle Subdomains hinweg fuer fortgeschrittenes Verhaltens-Targeting in Personalisierungskampagnen zu nutzen. Diese Konfiguration vereinheitlicht die im lokalen Speicher fuer alle Subdomains gespeicherten Daten.
Wenn Sie ein Implementierungs-Tag waehlen, das vereinheitlichte Sitzungsdaten nicht unterstuetzt, behandelt Kameleoon einen Besuch, der auf einer Subdomain beginnt, als neuen Besuch im lokalen Speicher des Nutzergeraetes, sobald er eine andere Subdomain erreicht. Das bedeutet, dass Kameleoon alle auf einer Subdomain gesammelten Daten (wie Seitenaufrufe und Verweildauer) auf der neuen Subdomain zuruecksetzt. Infolgedessen kann das auf diesen Kriterien basierende Targeting unerwartete Ergebnisse liefern. Wenn Sie beispielsweise eine Personalisierungskampagne haben, die beim vierten Seitenaufruf ausgeloest wird, wird ein Besucher, der drei Seiten auf der ersten Domain sieht und eine vierte Seite auf einer Subdomain laedt, die Personalisierung nur dann ausloesen, wenn Sie vereinheitlichte Sitzungsdaten aktivieren.
Die Local-Storage-Partitionierung auf verschiedenen Subdomains hat keinen Einfluss auf die fuer Analytik gesammelten Daten. Diese Option ist nur fuer Kampagnen erforderlich, die mehrere Subdomains umfassen oder Daten verwenden, die lokal auf verschiedenen Subdomains gespeichert sind.
Verfuegbarkeit:
Safari-Browser unterstuetzen aufgrund der Local-Storage-Partitionierungs-Einschraenkungen keine vereinheitlichten Sitzungsdaten. Um dies zu beheben, bietet Kameleoon einen Abrufmechanismus mit einem Server Synchronization Call (SSC). Mit dieser Methode ruft Kameleoon den visitorCode aus dem (serverseitig gesetzten) Cookie kameleoonVisitorCode ab. Kameleoon prueft dann, ob der aktuelle visitorCode im LocalStorage leer ist. Wenn er leer ist, fuehrt Kameleoon einen SSC durch, um alle im LocalStorage vorhandenen Daten von den Kameleoon-Backend-Servern abzurufen. Nach Abschluss dieses Aufrufs stellt Kameleoon die Daten in ihrem vorherigen Zustand wieder her.
Kameleoon aktiviert diese Option standardmaessig im Safari-Browser.
Tracking-Tag fuer vereinheitlichte Sitzungsdaten
Um vereinheitlichte Sitzungsdaten in Kameleoon zu aktivieren, hosten Sie eine <iframe>-Datei (unten bereitgestellt) auf der Haupt-(Top-Level-)Domain Ihrer Website. Dieses iframe wird geladen, wenn ein Besucher eine Seite mit einer URL aufruft, die nicht der Hauptdomain der Website entspricht. Die HTML-Datei des iframe ist klein, statisch und enthaelt nur unveraenderlichen Code zur Speicherung und Wiederherstellung von Besucherdaten im Local Storage.
Kameleoon empfiehlt, die Originaldatei unter dieser URL abzurufen: https://developers.kameleoon.com/resources/iframe_template.html. Sie koennen die Datei auch direkt herunterladen (klicken Sie mit der rechten Maustaste auf den Link und waehlen Sie Link speichern unter…).
Aendern Sie im Code des iframe zwei Variablen:
Um optimale Leistung zu gewaehrleisten, richten Sie Caching fuer die iframe-Datei ein. Da die Datei statisch bleibt, muss der Browser sie nicht mehrfach herunterladen. Konfigurieren Sie das Caching auf dem Server mit dem folgenden HTTP-Header:
Cache-Control: max-age=2592000
Fuegen Sie zusaetzlich zum Hosten des iframe das folgende Installations-Snippet ein. Geben Sie den korrekten Wert fuer die Variable kameleoonIframeURL an. Setzen Sie diese Variable auf die URL, unter der das iframe auf Ihrer Website erreichbar ist.
<script>
// Change the value of this URL to point to your own URL, where the iFrame is hosted
window.kameleoonIframeURL = "https://www.customerdomain.com/path/to/kameleoon-iframe.html";
window.kameleoonLightIframe = false;
var kameleoonIframeOriginElement = document.createElement("a");
kameleoonIframeOriginElement.href = kameleoonIframeURL;
window.kameleoonIframeOrigin = kameleoonIframeOriginElement.origin || (kameleoonIframeOriginElement.protocol + "//" + kameleoonIframeOriginElement.hostname);
if (location.href.indexOf(window.kameleoonIframeOrigin) != 0) {
window.kameleoonLightIframe = true;
var kameleoonProcessMessageEvent = function(event) {
if (window.kameleoonIframeOrigin == event.origin && event.data.slice && event.data.slice(0,9) == "Kameleoon") {
window.removeEventListener("message", kameleoonProcessMessageEvent);
window.kameleoonExternalIFrameLoaded = true;
if (window.Kameleoon) {
Kameleoon.Utils.runProtectedScript(event.data);
Kameleoon.Analyst.load();
} else {
window.kameleoonExternalIFrameLoadedData = event.data;
}
}
};
if (window.addEventListener) {
window.addEventListener("message", kameleoonProcessMessageEvent, false);
}
var iframeNode = document.createElement("iframe");
iframeNode.src = kameleoonIframeURL;
iframeNode.id = "kameleoonExternalIframe";
iframeNode.style = "float: left !important; opacity: 0.0 !important; width: 0px !important; height: 0px !important;";
document.head.appendChild(iframeNode);
}
</script>
Hosten Sie die iframe-Datei auf Ihren Servern in der Hauptdomain der Website. Bei mehreren Subdomains waehlen Sie die wichtigste. Dieser Schritt ist fuer technische Teams obligatorisch. Kameleoon verwendet immer die Hauptdomain, um Inhalte im Local Storage des Browsers zu speichern. Wenn die aktuelle URL der Hauptdomain entspricht, kann die Kameleoon-Engine Daten direkt in den zugehoerigen Local-Storage-Bereich schreiben. Wenn die URL zu einer anderen Domain gehoert, laedt Kameleoon die iframe-Datei, die statischen Code enthaelt, der nur Kameleoon-Daten auf der Hauptdomain lesen und schreiben kann.
Sie koennen das Snippet fuer vereinheitlichte Sitzungsdaten in einer Tag-Manager-Installation verwenden.
Vereinheitlichter Tag mit Anti-Flicker
Wenn Sie den vereinheitlichten Tag und den asynchronen Tag mit Anti-Flicker verwenden, muessen Sie die drei Skript-Tags in der folgenden Reihenfolge hinzufuegen:
- Asynchroner Tag mit Anti-Flicker.
- Skript fuer vereinheitlichte Sitzungsdaten.
- Kameleoon-Installations-Tag.
<script>
// Duration in milliseconds to wait while the Kameleoon application file is loaded
var kameleoonLoadingTimeout = 750;
window.kameleoonQueue = window.kameleoonQueue || [];
window.kameleoonStartLoadTime = Date.now();
if (! document.getElementById("kameleoonLoadingStyleSheet") && ! window.kameleoonDisplayPageTimeOut) {
var kameleoonS = document.getElementsByTagName("script")[0];
var kameleoonCc = "html::after { content: ''; position: fixed; inset: 0; background: #fff; z-index: 2147483647; }";
var kameleoonStn = document.createElement("style");
kameleoonStn.type = "text/css";
kameleoonStn.id = "kameleoonLoadingStyleSheet";
if (kameleoonStn.styleSheet) {
kameleoonStn.styleSheet.cssText = kameleoonCc;
} else {
kameleoonStn.appendChild(document.createTextNode(kameleoonCc));
}
kameleoonS.parentNode.insertBefore(kameleoonStn, kameleoonS);
window.kameleoonDisplayPage = function(fromEngine) {
if (!fromEngine) {
window.kameleoonTimeout = true;
}
if (kameleoonStn.parentNode) {
kameleoonStn.parentNode.removeChild(kameleoonStn);
}
};
window.kameleoonDisplayPageTimeOut = window.setTimeout(window.kameleoonDisplayPage, kameleoonLoadingTimeout);
}
</script>
<script>
// Change the value of this URL to point to your own URL, where the iFrame is hosted
window.kameleoonIframeURL = "https://www.customerdomain.com/path/to/kameleoon-iframe.html";
window.kameleoonLightIframe = false;
var kameleoonIframeOriginElement = document.createElement("a");
kameleoonIframeOriginElement.href = kameleoonIframeURL;
window.kameleoonIframeOrigin = kameleoonIframeOriginElement.origin || (kameleoonIframeOriginElement.protocol + "//" + kameleoonIframeOriginElement.hostname);
if (location.href.indexOf(window.kameleoonIframeOrigin) != 0) {
window.kameleoonLightIframe = true;
var kameleoonProcessMessageEvent = function(event) {
if (window.kameleoonIframeOrigin == event.origin && event.data.slice && event.data.slice(0,9) == "Kameleoon") {
window.removeEventListener("message", kameleoonProcessMessageEvent);
window.kameleoonExternalIFrameLoaded = true;
if (window.Kameleoon) {
Kameleoon.Utils.runProtectedScript(event.data);
Kameleoon.Analyst.load();
} else {
window.kameleoonExternalIFrameLoadedData = event.data;
}
}
};
if (window.addEventListener) {
window.addEventListener("message", kameleoonProcessMessageEvent, false);
}
var iframeNode = document.createElement("iframe");
iframeNode.src = kameleoonIframeURL;
iframeNode.id = "kameleoonExternalIframe";
iframeNode.style = "float: left !important; opacity: 0.0 !important; width: 0px !important; height: 0px !important;";
document.head.appendChild(iframeNode);
}
</script>
<script src="//SITE_CODE.kameleoon.io/engine.js" fetchpriority="high" async></script>
Wenn Sie kein iframe hosten koennen, stellt Kameleoon den Mechanismus Server Synchronization Call (SSC) bereit. Diese Funktion ruft alle Besucherdaten von den Backend-Servern von Kameleoon ab, wenn ein Besucher von der Hauptdomain zu einer Subdomain wechselt. Nach dem Aufruf speichert Kameleoon die Daten im Local Storage des Browsers fuer Targeting-Zwecke.Um diese Option zu aktivieren, wenden Sie sich an Ihren Customer Success Manager.Beachten Sie Folgendes:
- SSC kann die Wahrscheinlichkeit von Flackern in Experimenten erhoehen, wenn das Targeting-Segment Daten enthaelt, die bei frueheren Besuchen oder Seiten gespeichert wurden, da die Kameleoon-Engine auf die Daten wartet.
- Einige Funktionen wie der Simulationsmodus funktionieren nicht, wenn ein Experiment simuliert wird, das ueber mehrere Domains laeuft. Um diese Funktion zu nutzen, starten Sie die Simulation auf beiden Domains.
Schwachstelle bei vereinheitlichten Sitzungsdaten
Bei einer Einrichtung mit vereinheitlichten Sitzungsdaten kann ein potenzielles Sicherheitsproblem auftreten. Da Kameleoon alle Besucherdaten in den lokalen Speicher einer externen Domain schreibt, koennte eine boeswillige Website diese Daten potenziell lesen, indem sie Ihr iframe in ihre Seite einbettet. Einmal geladen, wuerde das iframe die Kameleoon-Daten ueber einen postMessage()-Aufruf stets zurueckgeben. Die Antwort koennte benutzerdefinierte Daten enthalten, die vertrauliche oder sensible Informationen umfassen.
Dieser Exploit betrifft nur Besucher, die zuerst Ihre Website und anschliessend die boeswillige Seite besuchen. Daher kann ein Angreifer nicht die Daten aller Ihrer Besucher erlangen. Um die Sicherheit zu erhoehen, beschraenken Sie den Zugriff auf das iframe auf eine festgelegte Liste von Domains und Subdomains. Geben Sie diese Liste in der Variable allowedDomains innerhalb der statischen iFrame-Datei an.
Kameleoon verwendet die folgenden drei Massnahmen, um die Sicherheit des iframe zu erhoehen:
- Beschraenkung des Zugriffs auf identifizierte Domains: Der Code des iframe enthaelt eine Variable allowedDomains, die die Domains angibt, die berechtigt sind, das iframe anzufordern. Nur die aufgefuehrten Domains koennen Code aus dem Kameleoon-iframe laden und ausfuehren.
- Beschraenkung des Zugriffs auf identifizierte Site-Codes: Der Code des iframe enthaelt eine Variable siteCode, die sicherstellt, dass nur eine Kameleoon-Engine mit dem angegebenen Site-Code das iframe anfordern kann.
- Praefixierter Local Storage: Das iframe und Kameleoon lesen und schreiben nur Eintraege, die mit dem Praefix “kameleoon” beginnen. Kameleoon kann keine anderen Daten lesen oder schreiben, was eine zusaetzliche Sicherheitsebene bietet.
Damit vereinheitlichte Sitzungsdaten aktiviert werden koennen, muss das Kameleoon-iframe auf allen Ihren Domains geladen werden. Setzen Sie keinen X-Frame-Options-Antwort-Header.
Kameleoon hostet Projekte je nach Erstellungsdatum entweder auf kameleoon.eu oder kameleoon.io. Verwenden Sie die in der Kameleoon App fuer Ihr Projekt angezeigte Domain.