Clear-Site-Data
Utilisation
Déployer une ressource défectueuse, faire tourner des jetons d’authentification ou déconnecter un utilisateur : autant de situations où des données obsolètes côté client doivent disparaître. Guider les utilisateurs dans un vidage manuel du cache n’est pas fiable. L’en-tête Clear-Site-Data offre au serveur un moyen déclaratif de supprimer des catégories précises de données stockées en une seule réponse.
L’en-tête accepte une ou plusieurs directives sous forme de chaînes entre guillemets indiquant les types de données à effacer. Les directives multiples sont séparées par des virgules. Le joker ”*” efface tout, y compris les types de données ajoutés par de futures révisions de la spécification.
L’en-tête ne fonctionne qu’en HTTPS. Les navigateurs ignorent l’en-tête sur les réponses HTTP non sécurisées. La portée de “cookies” s’étend au domaine enregistré tout entier et à tous ses sous-domaines : une réponse Clear-Site-Data provenant de example.re efface donc aussi les cookies posés par stage.example.re.
Un schéma de déploiement courant consiste à attacher l’en-tête à un point de terminaison de déconnexion. Le serveur répond à la demande de déconnexion avec Clear-Site-Data pour effacer d’un seul coup les cookies de session, les ressources mises en cache et le stockage local. Un autre schéma est une URL dédiée au vidage de cache, servie temporairement après un déploiement raté, qui permet aux équipes d’exploitation de forcer les visiteurs à basculer sur des ressources fraîches sans attendre l’expiration du cache.
Remarque
Envoyer Clear-Site-Data sur chaque réponse revient à désactiver la mise en cache du site. Chaque chargement de page vide le cache du navigateur, ce qui provoque une dégradation notable des performances. Limitez l’en-tête à des réponses ciblées : points de terminaison de déconnexion, pages de récupération après erreur ou URL temporaires de vidage de cache.
Remarque
Tous les principaux navigateurs prennent en charge l’en-tête Clear-Site-Data. Safari prend en charge toutes les directives sauf “executionContexts” et applique un partitionnement par origine, ce qui empêche une iframe intersite d’effacer des données propriétaires.
”cache”
Efface le cache HTTP du navigateur pour l’origine. Certaines implémentations effacent également les caches associés : pages pré-rendues, entrées du cache de navigation avant/arrière, caches de scripts, caches de shaders WebGL et suggestions de la barre d’adresse.
”cookies”
Efface tous les cookies du domaine enregistré et de tous ses sous-domaines. Efface également les identifiants d’authentification HTTP associés à l’origine. La portée est plus large que celle des autres directives, car la correspondance de domaine des cookies englobe les sous-domaines parents et frères.
”storage”
Efface le stockage DOM pour l’origine. Cela inclut localStorage, sessionStorage, les bases IndexedDB, les enregistrements de Service Worker, les bases Web SQL (dépréciées), les données de l’API FileSystem et les données de plugins.
”executionContexts”
Recharge tous les contextes de navigation de l’origine. Le navigateur exécute l’équivalent de location.reload() sur chaque onglet ou cadre ouvert associé à l’origine. Cette directive est expérimentale et peu implémentée.
Extensions spécifiques à Chromium
Les directives “clientHints”, “prefetchCache” et “prerenderCache” sont des extensions spécifiques à Chromium, non définies dans la spécification W3C Clear Site Data. Les directives définies par la spécification sont “cache”, “cookies”, “storage”, “executionContexts” et ”*”. Les extensions Chromium ne fonctionnent que dans les navigateurs basés sur Chromium et ne sont reconnues ni par Firefox ni par Safari.
”clientHints”
Efface les préférences de client hints stockées via l’en-tête Accept-CH. Extension spécifique à Chromium. Effacer “cache”, “cookies” ou ”*” efface aussi automatiquement les client hints.
”prefetchCache”
Efface les caches de préchargement Speculation Rules rattachés à l’origine du référent. Extension spécifique à Chromium. Utile pour écarter du contenu préchargé devenu obsolète après un changement d’état comme une connexion ou une déconnexion. L’en-tête portant cette directive fonctionne sur n’importe quelle réponse HTTP de même site.
”prerenderCache”
Efface les caches de pré-rendu Speculation Rules rattachés à l’origine du référent. Extension spécifique à Chromium. Associée à “prefetchCache” pour effacer tous les caches de chargement spéculatif. Une application rendue côté client qui récupère ses données en JavaScript utilise “prerenderCache” lors des changements d’état afin d’écarter les pages pré-rendues tout en conservant intact le HTML préchargé.
”*” (joker)
Efface tous les types de données de l’origine, y compris tout type de directive ajouté ultérieurement à la spécification. C’est le choix le plus sûr pour un nettoyage complet, et celui qui a l’effet le plus large sur l’expérience de navigation.
Exemple
Un point de terminaison de déconnexion efface les cookies de session et le stockage. Le navigateur supprime tous les cookies du domaine (sous-domaines compris), retire les données localStorage et IndexedDB, et abandonne les ressources mises en cache.
Clear-Site-Data: "cache", "cookies", "storage"
Un effacement ciblé sur le seul cache après un déploiement raté. Le serveur attache temporairement cet en-tête aux réponses jusqu’à ce que les visiteurs soient passés sur les ressources fraîches.
Clear-Site-Data: "cache"
Un nettoyage complet à l’aide du joker. Toutes les données mises en cache, les cookies, le stockage et tout type de données futur sont supprimés. Courant sur les pages de confirmation de suppression de compte.
Clear-Site-Data: "*"
Effacement des seuls caches de chargement spéculatif après un changement d’état. Les pages préchargées et pré-rendues antérieures à l’événement de connexion sont abandonnées.
Clear-Site-Data: "prefetchCache", "prerenderCache"