Anzeige rendern

Wenn bei einer Protected Audience-Auktion eine mögliche Anzeige zurückgegeben wird, kann diese entweder als intransparente URN zurückgegeben werden, mit der eine Anzeige in einem iframe gerendert wird, oder als FencedFrameConfig, mit dem die Anzeige in einem Fence Frame gerendert wird.

In diesem Leitfaden wird erläutert, was ein Fenced Frame ist, warum er erforderlich ist und wie eine Anzeige mit einer der beiden Methoden gerendert wird. Ausführlichere Informationen zu Fenced Frames finden Sie in diesem Leitfaden oder im Vorschlag.

Was sind Fenced Frames?

Ein Fenced Frame (<fencedframe>) ist ein HTML-Element für eingebettete Inhalte, ähnlich wie ein iframe-Element. Im Gegensatz zu iframes schränkt ein Fenced Frame die Kommunikation mit seinem Einbettungskontext ein, um dem Frame Zugriff auf websiteübergreifende Daten zu ermöglichen, ohne sie für den Einbettungskontext freizugeben. Ebenso können selbst erhobene Daten im Einbettungskontext nicht mit dem Fenced Frame geteilt werden.

Mit news.example (Kontext für die Einbettung) wird beispielsweise eine Anzeige aus shoes.example in einen Fenced Frame eingebettet. news.example kann keine Daten aus der Anzeige shoes.example exfiltrieren und shoes.example kann keine selbst erhobenen Daten aus news.example abrufen.

Wie funktionieren Fenced Frames?

Fenced Frames verwenden das FencedFrameConfig-Objekt für die Navigation. Dieses Objekt kann von einer Protected Audience-Auktion zurückgegeben werden. Dann wird das Konfigurationsobjekt als config-Attribut für das Fence-Frame-Element festgelegt. Sie unterscheidet sich von einer iframe, bei der dem src-Attribut eine URL oder eine opake URN zugewiesen ist. Das FencedFrameConfig-Objekt hat ein schreibgeschütztes url-Attribut. Da in den aktuellen Anwendungsfällen jedoch die tatsächliche URL der internen Ressource ausgeblendet sein muss, gibt dieses Attribut beim Lesen den String „undurchsichtig“ zurück.

Ein Fenced Frame kann postMessage nicht verwenden, um mit seinem Einbettungscode zu kommunizieren. Für einen Fenced Frame kann jedoch postMessage mit iframes innerhalb des Fenced Frames verwendet werden.

Fenced Frames werden auf andere Weise vom Publisher isoliert. Der Publisher hat keinen Zugriff auf das DOM in einem Fenced Frame und der Fenced Frame kann nicht auf das DOM des Publishers zugreifen. Außerdem sind Attribute wie name, die auf einen beliebigen Wert festgelegt und vom Publisher beobachtet werden können, in Fenced Frames nicht verfügbar.

Fenced Frames verhalten sich wie ein Browserkontext der obersten Ebene (z. B. ein Browsertab). Obwohl ein Fenced Frame in bestimmten Anwendungsfällen (z. B. opaque-ads) websiteübergreifende Daten enthalten kann (z. B. eine Protected Audience API-Interessengruppe), kann der Frame nicht auf nicht partitionierten Speicher oder Cookies zugreifen. Ein opaque-ads-Fenced Frame kann auf ein eindeutiges, nonce-basiertes Cookie und eine Speicherpartition zugreifen.

Die Eigenschaften von Fence Frames finden Sie in der Erläuterung.

Anzeige in einem Fenced Frame rendern

Von einer Protected Audience-Auktion wird ein FencedFrameConfig zurückgegeben, sofern der resolveToConfig-Parameter von AuctionConfig auf „true“ gesetzt wurde:

const frameConfig = await navigator.runAdAuction({
  // ...auction configuration
  resolveToConfig: true
});

Nachdem Sie die Konfiguration erhalten haben, können Sie sie dem Attribut config eines Fenced Frames zuweisen, um den Frame zu der durch die Konfiguration dargestellten Ressource zu bewegen. Frühere Versionen von Chrome unterstützen die resolveToConfig-Eigenschaft nicht. Du musst also bestätigen, dass das Versprechen zu FencedFrameConfig aufgelöst wurde, bevor du Folgendes aufrufst:

if (window.FencedFrameConfig && frameConfig instanceof FencedFrameConfig) {
  const frame = document.createElement('fencedframe');
  frame.config = frameConfig;
}

Anzeige in einem iFrame rendern

Wenn AuctionConfig resolveToConfig nicht explizit festlegt oder auf „false“ gesetzt ist, gibt runAdAuction() eine intransparente URN zurück. Diese URN kann als src eines iframe festgelegt werden, um die Anzeige zu rendern.