Cómo eliminar las cookies del navegador

La Autoridad Francesa de Protección de Datos (CNIL) recomienda eliminar las cookies no esenciales del navegador del usuario cuando este modifica su elección y decide rechazar las cookies que había aceptado previamente. En este artículo te explicaremos cómo hacerlo.

El método descrito a continuación presenta una manera de eliminar las cookies asociadas al dominio principal y a los subdominios de la página en cuestión

⚠️ No es posible desde el punto de vista técnico eliminar las cookies de terceros instaladas en el navegador de un usuario que las ha aceptado previamente. 

 

La eliminación de cookies del navegador del usuario se lleva a cabo mediante un script que puedes integrar en tu sitio web.

Para realizar esta configuración, sigue estos pasos: 

1- Identificar las cookies esenciales 

En primer lugar, tendrás que identificar los nombres de las cookies que son necesarias y que quieres mantener en el navegador del usuario. Tendrás que especificar estas cookies en el script para que no sean eliminadas. El resto de cookies, así como los datos almacenados en el objeto localStorage, se eliminarán automáticamente. 

⚠️ No eliminar las cookies de Didomi (didomi_token y euconsent-v2).

Esto provocaría que el banner aparezca de nuevo para volver a recoger el consentimiento.

2- Insertar el script para eliminar las cookies 

Entonces, tendrás que integrar el script incluido más abajo en cualquier parte de tu HTML.

No se trata de una receta universal que pueda aplicarse en todos los casos de la misma forma. El script es un fragmento de código estándar que probablemente tendrá que adaptarse en función de la configuración y las limitaciones de cada caso particular.

Este script funciona en todos los navegadores. Se activa cuando un usuario que había aceptado todo modifica sus elecciones para rechazarlo todo. De este modo, cuando un usuario retira su consentimiento, la página se actualiza automáticamente y todas las cookies que no están precisadas en el script se eliminarán del navegador.  

 

Este es el script que tienes que añadir a tu HTML:  

/**


* The list of cookies to keep


*/

(function() {


  var itemsToKeep = ["euconsent-v2", "didomi_token"];


  /**


  * Returns cookie value


  */


  var getCookieValue = function (cookieName) {


   var cookie = document.cookie.split(";").filter(function (cookieValue) {


     return cookieValue.indexOf(cookieName) !== -1;


   })[0];



   if (cookie) {


    return cookie.split("=")[1];

   }


 };

  var deleteCookie = function (name, domain, path) {

   path = path || "/";

   var cookie = [

     name + "=",

     "expires=Thu, 01 Jan 1970 00:00:01 GMT",

     "path=" + path,

   ];

   if (domain) {

     cookie.push("domain=" + domain);

   }

   document.cookie = cookie.join(";");

  };



  /**


  * Check if all vendor and purposes are disabled


  */


  var areAllVendorsAndPurposesDisabled = function () {


   var enabledEntities = [];


   var disabledEntities = [];


   var data = window.Didomi.getUserStatus();


   data.vendors.consent.enabled.forEach(function (entity) {


     enabledEntities.push(entity);


   });


   data.purposes.consent.enabled.forEach(function (entity) {


     enabledEntities.push(entity);


   });


   data.vendors.consent.disabled.forEach(function (entity) {


     disabledEntities.push(entity);


   });


   data.purposes.consent.disabled.forEach(function (entity) {


     disabledEntities.push(entity);


   });



   /**



    * We check that we don't have any enabled entities



    * and that disabled entities are present



    */


   return enabledEntities.length === 0 && disabledEntities.length > 0;


  };



  var consentEventsCount = 0;



  var existingConsentString = getCookieValue("euconsent-v2");


  window.didomiEventListeners = window.didomiEventListeners || [];


  window.didomiEventListeners.push({



   event: "consent.changed",



   listener: function () {



     /**


      * We catch consent update event in 2 cases:


      * -> 1. When user gives consent and updates it without the page reload (via `consentEventsCount` value)



      * -> 2. When user gives consent and updates it after the page reload (via `existingConsentString` value)


      */


     var consentUpdate =


       consentEventsCount > 0 ? true : !!existingConsentString;


     if (consentUpdate && areAllVendorsAndPurposesDisabled()) {


       /**


        * Consent has been given previously and this is a consent update


        */


       var cookiesToDelete = document.cookie


         .split(";")


         .map(function (cookie) {


          return cookie.split("=")[0].trim();

         })



        .filter(function (cookieName) {


           return itemsToKeep.indexOf(cookieName) === -1;

        });


       /**


       * Delete cookies

        */


       cookiesToDelete.forEach(function (cookieToDelete) {

         /*

          Delete from every possible domain (based on the current page domain) :

         */

        var domains = ('.#' + document.location.host.replaceAll('.', '#.#')).split('#');

         while(domains.length) {

           var possibleDomain = domains.join('');


           deleteCookie(cookieToDelete, possibleDomain);


           domains.shift();

         }


       });

      var localStorageItemsToDelete = Object.keys(window.localStorage).filter(


         function (localStorageItemName) {


           return itemsToKeep.indexOf(localStorageItemName) === -1;


         }

      );


       /**


       * Delete local storage items


       */

       localStorageItemsToDelete.forEach(function (localStorageItemName) {


        window.localStorage.removeItem(localStorageItemName)


       });


       // Reload the page


      window.location.reload();


     }


     consentEventsCount++;


   },


 });


})();