Когда аукцион Защищенной аудитории возвращает кандидата на рекламу, он может быть возвращен либо в виде непрозрачного URN, который используется для отображения объявления в iframe
, либо в виде FencedFrameConfig
, который используется для отображения объявления в изолированном фрейме.
В этом руководстве объясняется, что такое изолированный фрейм и зачем он нужен, а также как визуализировать объявление любым из методов. Для более подробного изучения рам с ограждением найдите дополнительную информацию в этом руководстве или в предложении .
Что такое огражденные рамы?
Огражденный фрейм ( <fencedframe>
) — это элемент HTML для встроенного контента, аналогичный iframe
. В отличие от iframe
, изолированный фрейм ограничивает связь со своим контекстом внедрения, чтобы разрешить фрейму доступ к межсайтовым данным без совместного использования их с контекстом внедрения. Аналогичным образом, любые собственные данные в контексте внедрения не могут быть переданы в изолированный фрейм.
Например, скажем, news.example
(контекст внедрения) встраивает рекламу из shoes.example
в изолированный фрейм. news.example
не может извлечь данные из объявления shoes.example
, а shoes.example
не может получить собственные данные из news.example
.
Как работают огражденные рамы?
Огражденные фреймы используют объект FencedFrameConfig
для навигации. Этот объект можно вернуть с аукциона Защищенной аудитории. Затем объект конфигурации устанавливается в качестве атрибута config
в элементе изолированного фрейма. Это отличается от iframe
, где URL-адрес или непрозрачный URN присваивается атрибуту src
. Объект FencedFrameConfig
имеет свойство url
, доступное только для чтения; однако, поскольку текущие варианты использования требуют, чтобы фактический URL-адрес внутреннего ресурса был скрыт, это свойство возвращает непрозрачную строку при чтении.
Изолированный фрейм не может использовать postMessage
для связи с устройством внедрения. Однако изолированный фрейм может использовать postMessage
с iframe
внутри изолированного фрейма.
Огражденные фреймы будут изолированы от издателя другими способами. Издатель не будет иметь доступа к DOM внутри изолированного фрейма, а изолированный фрейм не сможет получить доступ к DOM издателя. Кроме того, такие атрибуты, как name
, которым может быть присвоено любое значение и которое может отслеживать издатель, недоступны в изолированных фреймах.
Огражденные фреймы ведут себя как контекст просмотра верхнего уровня (например, вкладка браузера). Хотя в некоторых случаях использования (например, opaque-ads
) изолированный фрейм может содержать межсайтовые данные (например, группа интересов API защищенной аудитории), этот фрейм не может получить доступ к неразделенному хранилищу или файлам cookie. Огражденный фрейм opaque-ads
может получить доступ к уникальному разделу cookie и хранилища на основе nonce.
Характеристики огражденных рам более подробно описаны в пояснении .
Рендеринг объявления в огороженной рамке
FencedFrameConfig
возвращается с аукциона Защищенной аудитории при условии, что для resolveToConfig
AuctionConfig
установлено значение true:
const frameConfig = await navigator.runAdAuction({
// ...auction configuration
resolveToConfig: true
});
Получив конфигурацию, вы можете назначить ее атрибуту config
изолированного фрейма, чтобы перейти от фрейма к ресурсу, представленному конфигурацией. Более ранние версии Chrome не поддерживают resolveToConfig
, поэтому перед навигацией все равно необходимо подтвердить, что обещание разрешено в FencedFrameConfig
:
if (window.FencedFrameConfig && frameConfig instanceof FencedFrameConfig) {
const frame = document.createElement('fencedframe');
frame.config = frameConfig;
}
Отобразить рекламу в iframe
Если AuctionConfig
не задано явно resolveToConfig
или для него установлено значение false, runAdAuction()
возвращает непрозрачный URN. Этот URN можно установить в качестве src
iframe
для отображения объявления.