Start · Sprachen · JavaScript · Referenz · WorkerNavigator.globalPrivacyControl

WorkerNavigator.globalPrivacyControl

Eigenschaft

Schreibgeschützte Eigenschaft, die in Web Workern die Global-Privacy-Control-Einstellung (GPC) des Benutzers als <code>boolean</code> zurückgibt.

seit JavaScript Experimentell: Firefox 120+, Brave; nicht in Chrom Kategorie: webapi

Signatur

WorkerNavigator.globalPrivacyControl

Beschreibung

WorkerNavigator.globalPrivacyControl ist das Gegenstück zu Navigator.globalPrivacyControl innerhalb von Dedicated, Shared und Service Workern. Die Eigenschaft zeigt an, ob der Benutzer per Global Privacy Control (GPC) erklärt hat, dass seine personenbezogenen Daten nicht verkauft oder an Dritte weitergegeben werden sollen. Der Wert entspricht dem HTTP-Request-Header Sec-GPC: 1, den der Browser mitsendet.

Nützlich ist die Eigenschaft vor allem dann, wenn Tracking-, Analyse- oder Werbelogik in einen Worker ausgelagert ist, etwa wenn ein Service Worker Analytics-Anfragen bündelt oder ein Worker Daten an Drittanbieter weiterleitet. Dort kannst du direkt prüfen, ob du solche Übertragungen unterlassen musst, und brauchst dafür keine Nachricht vom Hauptthread.

Der Wert ist true, wenn der Benutzer GPC aktiviert hat. Andernfalls ist er false. In Browsern ohne GPC-Unterstützung ist die Eigenschaft undefined. Das behandelst du am besten wie false, also als „keine Aussage“, und nicht als Zustimmung zu irgendetwas.

Rückgabewert

Typ
boolean | undefined
Beschreibung
true, wenn der Benutzer GPC aktiviert hat (kein Verkauf bzw. keine Weitergabe von Daten gewünscht), sonst false. In Browsern ohne Unterstützung ist der Wert undefined.

Beispiele

GPC-Status im Dedicated Worker abfragen

// worker.js
const gpc = self.navigator.globalPrivacyControl;

if (gpc === undefined) {
  console.log('GPC wird von diesem Browser nicht unterstützt');
} else {
  console.log(`GPC aktiv: ${gpc}`);
}

// main.js
const worker = new Worker('worker.js');
GPC aktiv: true

Analytics-Weitergabe im Service Worker unterdrücken

// sw.js
const THIRD_PARTY_ANALYTICS = 'https://analytics.example.com';

self.addEventListener('fetch', (event) => {
  const url = new URL(event.request.url);
  const optedOut = self.navigator.globalPrivacyControl === true;

  if (optedOut && url.origin === THIRD_PARTY_ANALYTICS) {
    // Anfrage an den Drittanbieter nicht weiterleiten
    event.respondWith(new Response(null, { status: 204 }));
  }
});

GPC-Status an den Hauptthread melden

// worker.js
self.postMessage({
  type: 'privacy-status',
  gpc: Boolean(self.navigator.globalPrivacyControl)
});

// main.js
const worker = new Worker('worker.js');
worker.addEventListener('message', ({ data }) => {
  if (data.type === 'privacy-status') {
    console.log('Datenweitergabe erlaubt:', !data.gpc);
  }
});
Datenweitergabe erlaubt: false

// Wichtig · Fallstricke

  • Experimentell: Die Eigenschaft gehört nicht zu einem W3C-Standard, sondern zu einem Entwurf. Unterstützt wird sie von Firefox (ab Version 120 per Einstellung, im privaten Modus standardmäßig) und Brave. Chrome und Safari unterstützen sie nicht, wenn man sie dort nicht per Erweiterung nachrüstet. Prüfe die Unterstützung deshalb immer mit === true bzw. auf undefined.
  • undefined heißt nicht, dass der Benutzer zustimmt. Diese Prüfung ersetzt kein Einwilligungsverfahren (Consent Management).
  • Rechtlich kann GPC als verbindlicher Opt-out gelten, zum Beispiel nach CCPA/CPRA in Kalifornien. Nach DSGVO ist der Status unklar. Respektiere das Signal auch serverseitig über den Header Sec-GPC.
  • Die Eigenschaft ist schreibgeschützt. Zuweisungen werden ignoriert oder lösen im Strict Mode einen Fehler aus.
  • Für Fingerprinting ist der Wert nur begrenzt aussagekräftig (1 Bit), er trägt aber trotzdem zur Identifizierbarkeit eines Browsers bei.