Afficher une annonce

Lorsqu'une enchère Protected Audience renvoie une annonce candidate, celle-ci peut être renvoyée sous la forme d'un URN opaque, qui est utilisé pour afficher une annonce dans un iframe, ou d'un FencedFrameConfig, qui est utilisé pour afficher l'annonce dans un cadre clôturé.

Ce guide explique ce qu'est un cadre clôturé et pourquoi il est nécessaire, ainsi que comment afficher une annonce à l'aide de l'une ou l'autre des méthodes. Pour en savoir plus sur les cadres clôturés, consultez ce guide ou la proposition.

Que sont les frames cloisonnés ?

Un cadre clôturé (<fencedframe>) est un élément HTML pour le contenu intégré, semblable à un iframe. Contrairement aux iframe, un cadre clôturé limite la communication avec son contexte d'intégration pour permettre au cadre d'accéder aux données multisites sans les partager avec le contexte d'intégration. De même, aucune donnée first party dans le contexte d'intégration ne peut être partagée avec le cadre clôturé.

Par exemple, supposons que news.example (le contexte d'intégration) intègre une annonce de shoes.example dans un cadre clôturé. news.example ne peut pas exfiltrer de données à partir de l'annonce shoes.example, et shoes.example ne peut pas apprendre de données first party à partir de news.example.

Comment fonctionnent les cadres clôturés ?

Les cadres clôturés utilisent l'objet FencedFrameConfig pour la navigation. Cet objet peut être renvoyé à partir d'une enchère Protected Audience. L'objet de configuration est ensuite défini comme attribut config sur l'élément de frame clôturé. Cela diffère d'un iframe où une URL ou un URN opaque sont attribués à l'attribut src. L'objet FencedFrameConfig possède une propriété url en lecture seule. Toutefois, étant donné que les cas d'utilisation actuels nécessitent que l'URL réelle de la ressource interne soit masquée, cette propriété renvoie la chaîne opaque lorsqu'elle est lue.

Un Fenced Frame ne peut pas utiliser postMessage pour communiquer avec son intégrateur. Toutefois, un frame clôturé peut utiliser postMessage avec des iframe à l'intérieur du frame clôturé.

Les cadres clôturés seront isolés de l'éditeur d'autres manières. L'éditeur n'aura pas accès au DOM à l'intérieur d'un cadre clôturé, et le cadre clôturé ne pourra pas accéder au DOM de l'éditeur. De plus, les attributs tels que name, qui peuvent être définis sur n'importe quelle valeur et observés par l'éditeur, ne sont pas disponibles dans les cadres clôturés.

Les cadres clôturés se comportent comme un contexte de navigation de premier niveau (tel qu'un onglet de navigateur). Bien qu'un frame clôturé dans certains cas d'utilisation (comme opaque-ads) puisse contenir des données multisites (comme un groupe d'intérêt de l'API Protected Audience), il ne peut pas accéder au stockage ni aux cookies non partitionnés. Un frame opaque-ads délimité peut accéder à une partition de stockage et de cookies unique basée sur un nonce.

Les caractéristiques des cadres clôturés sont décrites plus en détail dans l'explication.

Afficher une annonce dans un frame cloisonné

Un FencedFrameConfig est renvoyé à partir d'une enchère Protected Audience, à condition que le paramètre resolveToConfig de AuctionConfig ait été défini sur "true" :

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

Une fois la configuration obtenue, vous pouvez l'attribuer à l'attribut config d'un frame clôturé pour que le frame accède à la ressource représentée par la configuration. Les versions antérieures de Chrome ne sont pas compatibles avec la propriété resolveToConfig. Vous devez donc toujours vérifier que la promesse a été résolue en FencedFrameConfig avant de naviguer :

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

Afficher une annonce dans un iFrame

Si AuctionConfig ne définit pas explicitement resolveToConfig ou si la valeur est définie sur "false", runAdAuction() renvoie un URN opaque. Cet URN peut être défini comme src d'un iframe pour afficher l'annonce.