Retour au blog

L'en-tête Sec-GPC est désormais partout : détection côté serveur pour l'analytics

Global Privacy Control circule sous la forme de l'en-tête de requête Sec-GPC sur chaque requête. Voici comment le lire à l'edge et le respecter dans un pipeline d'analytics sans cookies.

Global Privacy Control (GPC) est souvent abordé comme un signal juridique, mais pour qui développe, c'est d'abord et avant tout un en-tête HTTP. Chaque requête émise par un navigateur ou une extension avec GPC activé transporte Sec-GPC: 1, et la même préférence est exposée au JavaScript client via navigator.globalPrivacyControl. Si vous exécutez de l'analytics à l'edge, l'en-tête est le point d'intégration le plus propre : vous pouvez agir dessus avant que la moindre logique de mesure ne s'exécute, sans livrer un seul octet de code de suivi.

À quoi ressemble réellement le signal

La spécification GPC définit un champ d'en-tête de requête, Sec-GPC, dont la seule valeur significative est 1, indiquant que la personne ne consent pas à la vente ni au partage de ses données personnelles. L'absence de l'en-tête signifie qu'aucune préférence n'a été exprimée — ce n'est explicitement pas équivalent à un 0 positif. La spécification définit également une ressource bien connue à /.well-known/gpc.json qu'un site publie pour déclarer qu'il honore le signal.

Parce que Sec-GPC utilise le préfixe Sec-, c'est un nom d'en-tête interdit : il ne peut être ni défini ni écrasé par fetch() ou XMLHttpRequest, ce qui le rend plus difficile à falsifier depuis les scripts de page qu'un en-tête personnalisé. Il est envoyé aussi bien lors des navigations que des requêtes de sous-ressources ; un worker à l'edge le voit donc dès le premier accès.

Le lire à l'edge Cloudflare

Sur un Cloudflare Worker, la vérification tient en une ligne, et elle s'exécute avant que vous ne décidiez d'enregistrer quoi que ce soit :

export default {
  async fetch(request) {
    const gpc = request.headers.get('Sec-GPC') === '1';
    // gpc === true -> la personne a refusé la vente/le partage
    // n'enregistrer en conséquence que des signaux agrégés et respectueux de la vie privée
    return handle(request, { gpc });
  }
};

Pour Monoid, cela recoupe directement le fonctionnement actuel du produit. Monoid ne stocke aucun cookie, aucun localStorage, et ne dérive aucune empreinte : il n'existe donc aucun profil inter-sites à supprimer. GPC est un refus juridique de la vente et du partage de données personnelles — un comportement dans lequel une conception sans cookies et axée sur la vie privée ne s'engage jamais. Détecter Sec-GPC devient donc une mesure de défense en profondeur et une trace auditable montrant que la préférence a été observée, plutôt qu'un interrupteur qui modifie les données quittant le navigateur.

Pourquoi cela compte juridiquement, en bref

L'opposabilité de GPC n'est pas théorique. L'accord de 2022 entre le procureur général de Californie et Sephora a clairement établi que le CCPA impose aux entreprises de traiter GPC comme un refus valable de la vente, et les règlements du California Privacy Rights Act exigent d'honorer les signaux de préférence d'opt-out. Le Colorado et d'autres régimes d'États américains ont adopté des exigences comparables en matière de mécanismes universels d'opt-out. Lire l'en-tête côté serveur vous donne un point déterministe et journalisé où la conformité se produit — bien plus robuste que de compter sur un gestionnaire de balises pour déclencher une règle.

Publier la ressource bien connue

Si vous honorez GPC, déclarez-le. Servez /.well-known/gpc.json avec un petit document :

{ "gpc": true, "lastUpdate": "2026-07-19" }

C'est un fichier statique que vous pouvez retourner depuis une route edge avec Content-Type: application/json. Il signale aux navigateurs, aux extensions et aux auditeurs que la préférence est respectée, et ne coûte rien à maintenir.

Conseils pratiques pour les pipelines d'analytics

  • Vérifiez l'en-tête avant la mesure, pas après. Agir à l'edge signifie que la décision est prise avant tout traitement en aval.
  • Ne traitez pas l'absence comme un consentement. Pas d'en-tête Sec-GPC signifie simplement aucune préférence ; combinez cela avec votre base légale existante.
  • Conservez une piste d'audit minimale. Journaliser qu'une requête portait Sec-GPC: 1 — sans l'attacher à un identifiant — démontre la bonne foi sans créer de profil.
  • Préférez l'en-tête à l'API JS pour le filtrage. La propriété navigator.globalPrivacyControl est utile pour l'interface côté client, mais l'en-tête vous laisse décider avant l'exécution du code.

La leçon plus large est que les signaux de confidentialité sont de plus en plus des faits de la couche transport, et non des bizarreries applicatives. Sec-GPC prend place aux côtés de DNT (obsolète), de l'en-tête Permissions-Policy et de Referrer-Policy parmi les choses qu'un système d'analytics devrait lire plutôt qu'ignorer. Pour un produit sans cookies, le changement est modeste précisément parce que l'architecture minimise déjà les données — ce qui est tout l'intérêt de construire ainsi dès le départ.

Sources

Comments

Loading comments…