Signatur
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
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');
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);
}
});
// 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
=== truebzw. aufundefined. undefinedheiß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.