A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.mozilla.org/ja/docs/Web/API/Fenced_frame_API below:

フェンスフレームAPI - Web API

フェンスフレーム API

Limited availability

Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

フェンスフレーム API は <fencedframe> 要素に埋め込まれたコンテンツを制御する機能を提供します。

概念と使用方法

ウェブにおけるプライバシーとセキュリティの問題の大きな原因の一つは、 <iframe> 要素に埋め込まれたコンテンツです。過去には、 <iframe> はサードパーティクッキーを設定するために使用されてきました。サードパーティクッキーは、サイト間で情報を共有したりユーザーを追跡したりするために使用することができます。また、 <iframe> に埋め込まれたコンテンツは、埋め込み文書と通信することができます(例えば、 Window.postMessage() を使用します)。

埋め込み先の文書は、スクリプトを使用して <iframe> から様々な情報を読み取ることができます。例えば、埋め込まれた URL が URL 引数を含んでいる場合、 src プロパティから URL を読み取ることで、重要なトラッキング/フィンガープリントのデータを取得できる可能性があります。 <iframe> は埋め込みコンテキストの DOM にもアクセスすることができます。

ほとんどの現行ブラウザーは、クッキーのデータが追跡のために使用できなくなるようにストレージを分割する仕組みに取り組んでいます(例えば、 Cookies Having Independent Partitioned State (CHIPS) や Firefox State Partitioning を参照してください)。

<fencedframe> 要素は、このパズルのもう一つのピースを解決することを目指しています。形状と機能において、 <iframe> ととてもよく似ています。

用途

<fencedframe> は他の API によって、様々な種類の別サイトのコンテンツを埋め込んだり、データを収集したりするために用いられ、プライバシーを保護する方法で異なる用途を満たします。これらのほとんどは、前回まではサードパーティーのクッキーや、プライバシーにとって好ましくない他のメカニズムに頼っていました。

<fencedframe> はどのように動作するのか

前述の通り、 <fencedframe> に埋め込まれたコンテンツを通常のスクリプトで直接制御することはできません。

どのコンテンツを <fencedframe> に表示させるかを設定するには、 API (Protected Audienceや共有ストレージなど)を利用して FencedFrameConfig オブジェクトを生成し、 JavaScript で <fencedframe> の HTMLFencedFrameElement.config プロパティの値として設定します。

次の例は、 Protected Audience API の広告オークションから FencedFrameConfig を取得し、それを使用して落札した広告を <fencedframe> に表示します。

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

const frame = document.createElement("fencedframe");
frame.config = frameConfig;

FencedFrameConfig オブジェクトを得るには、 resolveToConfig: true を runAdAuction() に渡す必要があります。 resolveToConfig が false に設定されていると、返される Promise は不透過な URN (urn:uuid:c36973b5-e5d9-de59-e4c4-364f137b3c7a など)に解決し、これは <iframe> 内でのみ使用することができます。

どちらの方法でも、ブラウザーは埋め込むコンテンツのターゲット位置を含む URL を格納します。不透明な URN、または FencedFrameConfig 内部の url プロパティに割り当てられたものです。埋め込みコンテキストで実行する JavaScript では、 URL の値を読み取ることはできません。

メモ: プライバシーサンドボックス API への既存の実装の移行を容易にするために、<iframe> の不透明な URN に対応しています。この対応は一時的なものであることを意図しており、採用が進むにつれて将来的に除去される予定です。

メモ: FencedFrameConfig には setSharedStorageContext() メソッドがあり、埋め込み文書内のデータを <fencedframe> の共有ストレージに渡すために使用します。例えば、 Worklet で <fencedframe> を経由してアクセスし、レポートを作成するために使用することができます。詳しくは共有ストレージ API を参照してください。

Fence オブジェクトにおけるフェンスフレーム期のへのアクセス

<fencedframe> に埋め込まれた文書内では、 JavaScript は Window.fence プロパティにアクセスすることができ、その文書の Fence インスタンスを返します。このオブジェクトには、特にフェンスフレーム API の機能に関連するいくつかの関数が格納されています。 例えば、 Fence.reportEvent() は、広告の表示やクリックを報告するために、 1 つ以上の指定した URL へのビーコンを介したレポートデータの送信を発生させる方法を提供します。

権限ポリシー

<fencedframes> で使用するために設計された固有の機能だけが、そのフレームに設定する権限ポリシーによって有効にできます。詳細はフェンスフレームで利用できる権限ポリシーを参照してください。

HTTP ヘッダー

Sec-Fetch-Dest ヘッダーに fencedframe の値があると、 <fencedframe> 内に埋め込まれた子 <iframe> を含む、<fencedframe> 内からのリクエストに設定されます。

Sec-Fetch-Dest: fencedframe

サーバーは <fencedframe> に読み込まれることを意図している文書、または <fencedframe> 内に埋め込まれた <iframe> に対して fenced-frame という値を持つ Supports-Loading-Mode レスポンスヘッダーを設定しなければなりません。

Supports-Loading-Mode: fenced-frame

他にも HTTP ヘッダーに対するフェンスフレームの効果は以下の通りです。

beforeunload および unload イベント

beforeunload と unload イベントは、ページ削除のタイムスタンプという形で情報が漏れる可能性があるため、柵で囲まれたフレームでは発行しません。実装では、可能な限り多くの情報漏えいをなくすことを目指しています。

インターフェイス
FencedFrameConfig

<fencedframe> のナビゲーションを表します。つまり、何かコンテンツが表示されます。 FencedFrameConfig は Protected Audience API などのソースから返され、 HTMLFencedFrameElement.config の値として設定します。

Fence

フェンスフレームの機能に関連するいくつかの関数を格納します。 <fencedframe> 内に埋め込まれた文書にのみ利用できます。

HTMLFencedFrameElement

JavaScript で <fencedframe> 要素を表し、それを設定するプロパティを提供します。

他のインターフェイスの拡張
Navigator.deprecatedReplaceInURN()

指定された文字列を、指定された不透明な URN または FencedFrameConfig の内部プロパティ url に割り当てられた URL 内に代入します。

Window.fence

現在の文書コンテキストの Fence オブジェクトインスタンスを返します。 <fencedframe> 内に埋め込まれた文書でのみ利用できます。

Enrollment and local testing

Navigator.runAdAuction() などの FencedFrameConfig を作成する一部の API 機能(Protected Audience API)や WindowSharedStorage. selectURL() (共有ストレージ API)、他にも Fence.reportEvent() のような機能は、プライバシーサンドボックス登録プロセスにウェブサイトを登録するよう要求されます。これを行わないと、 API 呼び出しはコンソールの警告とともに失敗します。

メモ: Chrome では、登録しなくてもフレームコードをローカルでテストすることができます。ローカルテストを許可するには、以下の Chrome 開発者フラグを有効にしてください。

chrome://flags/#privacy-sandbox-enrollment-overrides

例

以下のデモはすべて <fencedframe> を使用しています。

仕様書 ブラウザーの互換性 関連情報

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4