Comment supprimer les cookies du navigateur

La CNIL recommande de supprimer tous les cookies non essentiels du navigateur de l'utilisateur lorsqu’il fait un changement de choix et refuse les cookies qu'il avait acceptés antérieurement. Ce guide vous explique comment mettre en place cette configuration.

La méthode décrite propose un moyen de supprimer les cookies associés au domaine principal et aux sous-domaines de la page courante.

 

⚠️ Il n’est techniquement pas possible de supprimer les cookies tiers déposés sur le navigateur d’un utilisateur qui les avait préalablement acceptés.

La suppression de cookies se fait grâce à un script que vous pouvez intégrer dans votre site.

Pour cela, suivez ces étapes : 

Identifier les cookies essentiels

  1. Identifiez les noms des cookies nécessaires que vous voulez conserver sur le navigateur des utilisateurs.
  2. Indiquez ces cookies dans le script afin de les conserver.
  3. Le reste des cookies, ainsi que les clés présentes dans le localStorage, seront supprimés par défaut.

⚠️ Ne pas supprimer les cookies Didomi (didomi_token et euconsent-v2).

Cela provoquerait un réaffichage de la bannière pour une recollecte du consentement.

 

Intégrer le script pour supprimer les cookies

  1. Intégrez le script indiqué ci-dessous n’importe où dans votre HTML.
    👉Il ne s'agit pas d'une recette universelle que vous pouvez appliquer partout. Le script est un code standard qui devra potentiellement être adapté en fonction des configurations et des contraintes de votre cas particulier. 
    👉Ce script fonctionne sur tous les navigateurs. Il est déclenché quand un utilisateur qui avait accepté tout change ses choix de consentement pour tout refuser. De cette manière, quand l'utilisateur retire son consentement, la page se rechargera automatiquement et les cookies qui n'ont pas été spécifiés seront supprimés du navigateur.
  2. Ajoutez le script suivant : 
/**


* 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++;


   },


 });


})();