Wenn bei einer Protected Audience-Auktion ein Anzeigenkandidat zurückgegeben wird, kann dies entweder als opake URN erfolgen, die zum Rendern einer Anzeige in einem iframe verwendet wird, oder als FencedFrameConfig, die zum Rendern der Anzeige in einem Fenced Frame verwendet wird.
In dieser Anleitung wird erläutert, was ein eingegrenzter Frame ist und warum er benötigt wird. Außerdem erfahren Sie, wie Sie eine Anzeige mit einer der beiden Methoden rendern. Weitere 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 einem iframe. Im Gegensatz zu iframe wird die Kommunikation mit dem Einbettungskontext in einem umzäunten Frame eingeschränkt, damit der Frame auf websiteübergreifende Daten zugreifen kann, ohne sie mit dem Einbettungskontext zu teilen. Ebenso dürfen selbst erhobene Daten im Einbettungskontext nicht für den Fenced Frame freigegeben werden.
Angenommen, news.example (der Einbettungskontext) bettet eine Anzeige von shoes.example in einen umzäunten Frame ein. news.example kann keine Daten aus der shoes.example-Anzeige exfiltrieren und shoes.example kann keine selbst erhobenen Daten von news.example abrufen.
Wie funktionieren Fenced Frames?
Für die Navigation in Fenced Frames wird das FencedFrameConfig-Objekt verwendet. Dieses Objekt kann von einer Protected Audience-Auktion zurückgegeben werden. Das Konfigurationsobjekt wird dann als config-Attribut für das Element des umzäunten Frames festgelegt. Dies unterscheidet sich von einem iframe, bei dem dem Attribut src eine URL oder eine undurchsichtige URN zugewiesen wird. Das FencedFrameConfig-Objekt hat ein schreibgeschütztes url-Attribut. Da die aktuellen Anwendungsfälle jedoch erfordern, dass die tatsächliche URL der internen Ressource verborgen wird, gibt dieses Attribut beim Lesen den String „opaque“ zurück.
Ein Fenced Frame kann postMessage nicht verwenden, um mit dem Einbettungs-Element zu kommunizieren.
In einem umzäunten Frame kann jedoch postMessage mit iframes verwendet werden.
Fenced Frames werden auf andere Weise vom Publisher isoliert. Der Verlag oder Webpublisher hat keinen Zugriff auf das DOM in einem Fenced Frame und der Fenced Frame kann nicht auf das DOM des Verlags oder Webpublishers zugreifen. Außerdem sind Attribute wie name, die vom Publisher auf einen beliebigen Wert festgelegt und beobachtet werden können, in Fenced Frames nicht verfügbar.
Fenced Frames verhalten sich wie ein Browsing-Kontext der obersten Ebene (z. B. ein Browser-Tab). Obwohl ein umzäunter Frame in bestimmten Anwendungsfällen (z. B. opaque-ads) websiteübergreifende Daten (z. B. eine Protected Audience API-Interessengruppe) enthalten kann, kann der Frame nicht auf nicht partitionierten Speicher oder Cookies zugreifen. Ein opaque-ads-Fenced Frame kann auf eine eindeutige, noncebasierte Cookie- und Speicherpartition zugreifen.
Die Eigenschaften von Fenced Frames werden in der Erläuterung genauer beschrieben.
Anzeige in einem Fenced Frame rendern
Bei einer Protected Audience-Auktion wird FencedFrameConfig zurückgegeben, sofern der Parameter resolveToConfig von AuctionConfig auf „true“ gesetzt wurde:
const frameConfig = await navigator.runAdAuction({
// ...auction configuration
resolveToConfig: true
});
Sobald Sie die Konfiguration erhalten haben, können Sie sie dem config-Attribut eines eingezäunten Frames zuweisen, um den Frame zur Ressource zu navigieren, die durch die Konfiguration dargestellt wird.
Ältere Versionen von Chrome unterstützen die resolveToConfig-Eigenschaft nicht. Sie müssen also weiterhin bestätigen, dass das Promise in FencedFrameConfig aufgelöst wurde, bevor Sie navigieren:
if (window.FencedFrameConfig && frameConfig instanceof FencedFrameConfig) {
const frame = document.createElement('fencedframe');
frame.config = frameConfig;
}
Anzeige in einem iFrame rendern
Wenn AuctionConfig nicht explizit resolveToConfig festlegt oder wenn resolveToConfig auf „false“ gesetzt ist, gibt runAdAuction() eine undurchsichtige URN zurück. Diese URN kann als src eines iframe festgelegt werden, um die Anzeige zu rendern.