Saltar al contenido principal
Kameleoon le permite unificar los datos de sesión entre todos los subdominios. En este modo, Kameleoon realiza seguimiento de los visitantes a través de varios subdominios dentro del mismo dominio de nivel superior. Por ejemplo, Kameleoon puede registrar como una única visita en local storage una visita que comenzó en un subdominio y continuó en otro. Kameleoon recomienda activar esta opción para utilizar los datos de sesión en todos los subdominios y realizar una segmentación conductual avanzada en las campañas de personalización. Esta configuración unifica los datos almacenados en el local storage de todos los subdominios. Si elige una etiqueta de implementación que no admite datos de sesión unificados, Kameleoon registra como una nueva visita en el local storage del dispositivo del usuario una visita que comienza en un subdominio cuando llega a otro subdominio. Esto significa que Kameleoon restablece todos los datos recopilados en un subdominio (como vistas de página y tiempo dedicado al sitio) en el nuevo subdominio. Como resultado, la segmentación basada en estos criterios puede producir resultados inesperados. Por ejemplo, si tiene una campaña de personalización que se activa en la cuarta vista de página, un visitante que vea tres páginas en el primer dominio y cargue una cuarta página en un subdominio solo activará la personalización si habilita los datos de sesión unificados.
El particionamiento de local storage en diferentes subdominios no afecta a los datos recopilados con fines analíticos. Esta opción solo es necesaria para campañas que abarcan subdominios o que usan datos almacenados localmente entre distintos subdominios.
Disponibilidad: Los navegadores Safari no admiten datos de sesión unificados debido a las restricciones de Local Storage Partitioning. Para resolver esto, Kameleoon proporciona un mecanismo de obtención mediante una Server Synchronization Call (SSC). Con este método, Kameleoon obtiene el visitorCode de la cookie kameleoonVisitorCode (establecida por el servidor). A continuación, Kameleoon comprueba si el visitorCode del LocalStorage actual está vacío. Si está vacío, Kameleoon realiza una SSC para obtener todos los datos presentes en el LocalStorage desde los servidores backend de Kameleoon. Una vez completada esta llamada, Kameleoon restaura los datos a su estado anterior.
Kameleoon habilita esta opción por defecto en el navegador Safari.

Etiqueta de seguimiento de datos de sesión unificados

Para habilitar los datos de sesión unificados en Kameleoon, aloje un archivo <iframe> (proporcionado a continuación) en el dominio principal (de nivel superior) de su sitio web. Este iframe se carga siempre que un visitante navega a una página con una URL que no coincide con el dominio principal del sitio web. El archivo HTML del iframe es pequeño, estático y contiene únicamente código inmutable que se utiliza para guardar y restaurar los datos del visitante en Local Storage.
Kameleoon recomienda obtener el archivo original en esta URL: https://developers.kameleoon.com/resources/iframe_template.html. También puede descargar el archivo directamente (haga clic con el botón derecho en el enlace y seleccione Guardar enlace como…).
Dentro del código del iframe, modifique dos variables:
Para garantizar un rendimiento óptimo, configure el almacenamiento en caché del archivo iframe. Como el archivo permanece estático, el navegador no necesita descargarlo varias veces. Configure el almacenamiento en caché en el servidor utilizando el siguiente encabezado HTTP: Cache-Control: max-age=2592000
Además de alojar el iframe, incluya el siguiente snippet de instalación. Proporcione el valor correcto para la variable kameleoonIframeURL. Defina esta variable con la URL donde el iframe sea accesible en su sitio web.
<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>
Aloje el archivo iframe en sus servidores en el dominio principal del sitio web. Si tiene varios subdominios, elija el más significativo. Este paso es obligatorio para los equipos técnicos. Kameleoon siempre utiliza el dominio principal para almacenar contenido en el Local Storage del navegador. Si la URL actual coincide con el dominio principal, el motor de Kameleoon puede escribir directamente datos en el espacio de Local Storage asociado. Si la URL pertenece a otro dominio, Kameleoon carga el archivo iframe, que contiene código estático que solo puede leer y escribir datos de Kameleoon en el dominio principal.
Puede utilizar el snippet de datos de sesión unificados en una instalación con Tag Manager.

Etiqueta unificada con anti-flicker

Si utiliza la etiqueta unificada y la etiqueta asíncrona con anti-flicker, debe añadir las tres etiquetas script en el siguiente orden:
  1. Etiqueta asíncrona con anti-flicker.
  2. Script de datos de sesión unificados.
  3. Etiqueta de instalación de Kameleoon.
<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>
Si no puede alojar un iframe, Kameleoon proporciona el mecanismo Server Synchronization Call (SSC). Esta función recupera todos los datos del visitante desde los servidores backend de Kameleoon cuando un visitante pasa del dominio principal a un subdominio. Tras la llamada, Kameleoon almacena los datos en el Local Storage del navegador con fines de segmentación.Para activar esta opción, póngase en contacto con su Customer Success Manager.Tenga en cuenta lo siguiente:
  • El SSC puede aumentar la probabilidad de flickering en los experimentos si el segmento de segmentación incluye datos almacenados de visitas o páginas anteriores, ya que el motor de Kameleoon espera a los datos.
  • Algunas funcionalidades, como el Modo Simulación, no funcionarán al simular un experimento que se ejecuta en varios dominios. Para utilizar esta función, inicie la simulación en ambos dominios.

Vulnerabilidad de los datos de sesión unificados

Cuando se utiliza una configuración con datos de sesión unificados, puede surgir un posible problema de seguridad. Dado que Kameleoon escribe todos los datos del visitante en el local storage perteneciente a un dominio externo, un sitio web malintencionado podría potencialmente leer estos datos al incluir su iframe en su página. Una vez cargado, el iframe devolvería siempre los datos de Kameleoon mediante una llamada postMessage(). La respuesta podría incluir datos personalizados que contengan información confidencial o sensible.
Este ataque solo afecta a los visitantes que visitan primero su sitio web y a continuación el sitio malintencionado. Por lo tanto, un atacante no puede obtener datos de todos sus visitantes. Para mejorar la seguridad, restrinja el acceso al iframe a una lista específica de dominios y subdominios. Proporcione esta lista en la variable allowedDomains dentro del archivo iFrame estático.
Kameleoon utiliza las siguientes tres medidas para mejorar la seguridad del iframe:
  1. Restricción de acceso a dominios identificados: El código del iframe incluye una variable allowedDomains que especifica los dominios autorizados a solicitar el iframe. Solo los dominios listados pueden cargar y ejecutar el código del iframe de Kameleoon.
  2. Restricción de acceso a site codes identificados: El código del iframe incluye una variable siteCode que garantiza que solo un motor de Kameleoon con el site code especificado pueda solicitar el iframe.
  3. Local Storage con prefijo: El iframe y Kameleoon solo leen y escriben entradas que comienzan con el prefijo “kameleoon”. Kameleoon no puede leer ni escribir ningún otro dato, lo que añade una capa adicional de seguridad.
Para habilitar los datos de sesión unificados, el iframe de Kameleoon debe cargarse en todos sus dominios. No establezca un encabezado de respuesta X-Frame-Options.
Kameleoon aloja los proyectos en kameleoon.eu o en kameleoon.io según su fecha de creación. Utilice el dominio que se muestra en la aplicación Kameleoon para su proyecto.