Start · Sprachen · JavaScript · Referenz · XMLHttpRequest.setAttributionReporting()

XMLHttpRequest.setAttributionReporting()

Methode

Markiert eine XHR-Anfrage so, dass ihre Antwort eine Attributionsquelle oder einen Attributionstrigger der Attribution Reporting API registrieren darf.

seit JavaScript Experimentell: nur Chromium-Browser (Chrome/Edge a deprecated seit ja Kategorie: webapi

Signatur

XMLHttpRequest.prototype.setAttributionReporting(options)

Beschreibung

Mit setAttributionReporting() legen Sie fest, dass die Antwort einer XMLHttpRequest-Anfrage eine Attributionsquelle (z. B. eine Anzeigeneinblendung oder einen Klick) oder einen Attributionstrigger (z. B. einen Kauf oder eine Anmeldung) registrieren darf. Die Methode gehört zur Attribution Reporting API aus der Privacy Sandbox. Diese API soll Conversions messen, ohne dass dafür Drittanbieter-Cookies nötig sind.

Nach dem Aufruf sendet der Browser den Anfrage-Header Attribution-Reporting-Eligible mit. Daran erkennt der Server, welche Art von Registrierung erlaubt ist. Die eigentliche Registrierung passiert erst, wenn der Server mit dem Header Attribution-Reporting-Register-Source oder Attribution-Reporting-Register-Trigger antwortet. Der Browser verarbeitet diese Header selbst. Für Ihren JavaScript-Code sind sie nicht sichtbar.

Sie müssen die Methode nach open() und vor send() aufrufen. Für neuen Code ist die Fetch-Variante meist die bessere Wahl: fetch(url, { attributionReporting: {...} }).

Parameter

Name Typ Default Beschreibung
$options Pflicht Object Objekt, das festlegt, welche Art von Registrierung die Antwort vornehmen darf.
$options.eventSourceEligible Pflicht boolean Bei true darf die Antwort eine Event-Quelle registrieren. Das ist eine Quelle, die an ein Ereignis wie einen Klick oder eine Einblendung gebunden ist.
$options.triggerEligible Pflicht boolean Bei true darf die Antwort einen Attributionstrigger registrieren, also eine Conversion.

Rückgabewert

Typ
void
Beschreibung
Gibt undefined zurück.

Beispiele

Attributionsquelle beim Anzeigenklick registrieren

const registerAdClick = (adId) => {
  const xhr = new XMLHttpRequest();
  xhr.open('GET', `https://ads.example/register-source?ad=${encodeURIComponent(adId)}`);
  // Die Antwort darf eine Event-Quelle registrieren
  xhr.setAttributionReporting({
    eventSourceEligible: true,
    triggerEligible: false
  });
  xhr.addEventListener('load', () => console.log('Quelle angefragt, Status:', xhr.status));
  xhr.send();
};

document.querySelector('#ad-banner')
  ?.addEventListener('click', () => registerAdClick('summer-sale-42'));
Quelle angefragt, Status: 200

Conversion (Trigger) nach dem Kauf melden

const reportPurchase = (orderValue) => {
  const xhr = new XMLHttpRequest();
  xhr.open('POST', 'https://ads.example/register-trigger');
  xhr.setRequestHeader('Content-Type', 'application/json');
  // Die Antwort darf einen Trigger registrieren
  xhr.setAttributionReporting({
    eventSourceEligible: false,
    triggerEligible: true
  });
  xhr.send(JSON.stringify({ value: orderValue }));
};

reportPurchase(49.99);

Funktionserkennung und korrekte Aufrufreihenfolge

const xhr = new XMLHttpRequest();
const supported = typeof xhr.setAttributionReporting === 'function';

xhr.open('GET', '/tracking/pixel');

if (supported) {
  try {
    xhr.setAttributionReporting({ eventSourceEligible: true, triggerEligible: false });
  } catch (err) {
    // z. B. TypeError, wenn die Permissions-Policy die Funktion verbietet
    console.warn('Attribution Reporting nicht erlaubt:', err.name);
  }
} else {
  console.log('Attribution Reporting wird nicht unterstützt');
}

xhr.send();
Attribution Reporting wird nicht unterstützt // z. B. in Firefox/Safari

// Wichtig · Fallstricke

  • Experimentell und abgekündigt: Die Methode gibt es nur in Chromium-Browsern (Chrome, Edge). Firefox und Safari unterstützen sie nicht. Google hat angekündigt, die Privacy-Sandbox-Technologien und damit auch die Attribution Reporting API auslaufen zu lassen. Verwenden Sie die Methode nicht in Produktivcode, ohne vorher zu prüfen, ob sie vorhanden ist.
  • Aufrufreihenfolge: Wenn Sie die Methode vor open() oder nach send() aufrufen, wirft sie einen InvalidStateError (DOMException).
  • Permissions-Policy: Wenn die Policy attribution-reporting das Dokument ausschließt, z. B. in einem iframe ohne allow="attribution-reporting", wirft die Methode einen TypeError.
  • Die Registrierung funktioniert nur in einem sicheren Kontext (HTTPS). Außerdem muss der Server die passenden Attribution-Reporting-Register-*-Antwort-Header senden. Ohne diese Header bewirkt der Aufruf nichts.
  • Datenschutz: Die Berichte werden verzögert und mit Rauschen versehen verschickt. Rechnen Sie also nicht damit, dass sie sofort oder exakt ankommen. Nutzer und Browser-Einstellungen können die API außerdem jederzeit deaktivieren.