メタタグ、ヘッダー、スクリプト内のトライアル トークンに関する一般的な問題に対処します。
チェックリスト
オリジン トライアルのトラブルシューティングを行うには、以下のリンクを使用して下記の各問題に対処します。
試してみましょう。
以下のデモでは、オリジン トライアル トークンを指定してトライアル機能にアクセスする各方法を示しています。
- ot-meta.glitch.me:
origin-trial
メタタグ内のトークン - ot-header.glitch.me:
Origin-Trial
レスポンス ヘッダー内のトークン - ot-3p.glitch.me: サードパーティのスクリプトによって挿入されたトークン
- ot-iframe.glitch.me: iframe でアクセスされるオリジン トライアル機能
- ot-iframe-3p.glitch.me: クロスオリジンの iframe の例
Chrome DevTools を使用してトークンを確認する
Chrome 93 以降では、DevTools により、選択したフレームの [Application] パネルにオリジン トライアル情報が表示されます。
一番上のフレームを展開して、サブフレームで使用可能なオリジン トライアル トークンを調べます。たとえば、ot-iframe.glitch.me のデモページの場合、iframe のページがトークンを提供していることがわかります。
- トークン ステータス: ページに有効なトークンがあるかどうか。一部のオリジン トライアルでは、地域制限などの要因により、有効なトークンがあるにもかかわらずオリジン トライアル機能を利用できない場合があります。Chrome DevTools のステータス コードでは、オリジン トライアルの各コードの意味について説明しています。
- 生成元: トークンに登録されているウェブ生成元。
- Expiry Time: トークンの最大の有効期限(最新)で、通常はトライアルの終了日時と一致します。これは、[My Registrations] に表示されるトークンの有効期間とは異なります。これは、トークンの現在の有効期間を示すもので、延長できます。
- 使用制限: 一部のトライアルで設定可能な使用制限。
- サードパーティ: トークンに対してサードパーティ マッチングを有効にするかどうか。これは、サードパーティのスクリプトから複数のサイト上でトライアル機能にアクセスする必要がある一部のオリジン トライアルで利用できます。
- Match Sub-Domains: トークンに対してサブドメイン マッチングを有効にするかどうか。これにより、サブドメインごとに異なるトークンを必要とすることなく、オリジンの複数のサブドメインでオリジン トライアル機能をテストできます。
現在のユーザーがトライアルを利用できない場合、トークンの有効期限が切れている場合、その他の制限がある場合は、Chrome DevTools でトライアル名の横に警告が表示されます。
Chrome DevTools のステータス コード
期限切れ: トークンは有効期限を過ぎています。新しい有効期限の新しいトークンを生成するには、トークンを更新する必要があります。
ソースコードFeatureDisabled: トライアルは現在ご利用いただけません。
ソースコードFeatureDisabledForUser: このトークンは、別の使用制限によって現在のユーザーに対して無効と指定されています。設計ドキュメントの「ユーザー サブセットの除外」セクションをご覧ください。
ソースコード 1
ソースコード 2安全でない: リクエストのオリジンが安全でなく、保護されていないオリジンに対してトライアルが有効になっていません。 オリジン トライアル トークン バリデータ コードの説明のとおり、サードパーティ トークンの場合、現在のオリジンとスクリプトオリジンの両方が安全でなければなりません。サブドメインの照合により、トークンのオリジンが、提供されたスクリプトのオリジンと完全には一致しない可能性があり、結果にはどのオリジンが一致したのかがわかりません。つまり、適切なスクリプトのオリジンを見つけるための直接の検索ではありません。オリジンの比較をすべてやり直すのを避けるために、指定したスクリプトのオリジンの数に応じたショートカットがあります。少なくとも 1 つ必要です。そうでない場合、サードパーティのトークンは正常に検証されません。
ソースコードInvalidSignature: トークンの署名が無効または不正な形式です。
ソースコード不正な形式: トークンの形式が正しくないため、解析できませんでした。
ソースコード
NotSupported: トークンで定義されたオリジン トライアルは、Chromium の「エンベダー」(Chrome や Edge などのブラウザ、WebView、他のユーザー エージェント)ではサポートされていません。
ソースコード成功: トークンは正しい形式であり、期限切れではなく、オリジン トライアルの機能に一致しています。想定される送信元からリクエストされています。
ソースコードTokenDisabled: トークンは無効としてマークされているため、使用できません。
ソースコードTrialNotAllowed: 現在のユーザーはオリジン トライアルをご利用いただけません。
ソースコードUnknownTrial: トークンが、既知のどのトライアルとも一致しない機能名を指定しています。
ソースコードWrongOrigin: リクエストのオリジンがトークンで指定されたオリジンと一致しません。これには、スキーム、ホスト名、ポートを含めることができます。このステータスは、サードパーティ トークンが外部の JavaScript ファイルではなく、HTTP ヘッダー、メタタグ、インライン スクリプトで指定されている場合にも適用されます。
ソースコードWrongVersion: トークン バージョンが正しくありません。現在サポートされているのはトークン バージョン 2 と 3 のみです。
ソースコード
機能しない🤔
オリジン トライアルが期待どおりに機能しない場合は、次の条件を満たしていることを確認してください。
Chromium や他のブラウザではなく、Chrome でテストしている
Chrome オリジン トライアルは、Chrome ユーザーが利用できるように設計されています。Chromium やその他の Chromium ベースのブラウザなど、他のブラウザでトライアル機能を有効にするために Chrome オリジン トライアル トークンを使用しないでください。これは、Chrome オリジン トライアルが、試験運用のために Chrome で利用できる機能に固有であるためです。
オリジン トライアルは Firefox と Microsoft Edge でも利用できます。Firefox または Edge のオリジン トライアルに登録しても、Chrome の機能は有効になりません。
サイトにアクセスする Chrome バージョンでオリジン トライアルが有効になっています
試用版へのアクセスは、Chrome の特定のバージョンに限定されます。場合によっては、トライアル機能は Stable 以前の Chrome チャンネル(Canary、Dev、Beta)でのみ利用可能です
バージョンの可用性は、トライアルの登録ページで確認できます。
お使いの Chrome のバージョンは、chrome://version でご確認いただけます。
Chrome の設定でオリジン トライアルが無効になっていない
特定の機能が利用できないという報告をユーザーから受けた場合は、Chrome の設定でその機能が無効になっていないかどうかを確認してください。たとえば、プライバシー サンドボックス機能は chrome://settings/privacySandbox
ページから無効にできます。
キーワードと構文が正しい
オリジン トライアル トークンに適切なキーワードと構文を使用してください。
ファーストパーティで使用する場合は、origin-trial
メタタグでトークンを指定できます。
<meta http-equiv="origin-trial" content="Aj4DysCv3VjknU3...">
また、Origin-Trial
レスポンス ヘッダーでトークンを指定することもできます。Node.js で Express を使用する例を次に示します。
app.use(function(req, res, next) {
res.setHeader('Origin-Trial', 'Aj4DysCv3VjknU3...')
next();
});
トークンは JavaScript を使用して指定することもできます。
function addTrialToken(tokenContents) {
const tokenElement = document.createElement('meta');
tokenElement.httpEquiv = 'origin-trial';
tokenElement.content = tokenContents;
document.head.appendChild(tokenElement);
}
ファーストパーティ トークンの生成元がページの送信元と一致している
トライアルの登録時に選択したウェブオリジンの値が、トークンを提供するメタタグまたはヘッダーを持つページのオリジンと一致していることを確認します。
たとえば、[Web Origin] として https://example.com
を選択した場合、次のようになります。
トークン値は次のように表示されます。
この値が、トラブルシューティングを行うページで使用したトークンと一致していることを確認します。
メタタグで提供されているトークンについては、HTML を確認します。
<meta http-equiv="origin-trial" content="Aj4DysCv3VjknU3...">
ヘッダーで提供されたトークンについては、Chrome DevTools Network パネルの [Response Headers] でトークンの値を確認できます。
ファーストパーティ トークンは、そのトークンを使用するオリジンから配信される
オリジンから提供されるページに含まれるコードに対してオリジン トライアル機能へのアクセスを有効にするには、メタタグ、ヘッダー、JavaScript 経由で同じオリジンからトライアル トークンを指定します。
トークンに登録するオリジンは、トークンを提供するオリジンと一致する必要があります。
第三者トークンの生成元とスクリプトの生成元との一致
他のオリジンで挿入されたスクリプトのオリジン トライアルに登録できます。
たとえば、javascript-library.example
から提供されるスクリプトをオリジン トライアルに参加させるには、javascript-library.example
のサードパーティ マッチングでトークンを登録する必要があります。
サードパーティ トークンの生成元の値は、そのトークンを挿入するスクリプトの生成元と一致している必要があります。
第三者スクリプトが第三者トークンを使用する
スクリプトではなくオリジンのトークンを登録するだけで、サードパーティのスクリプトがサイトのオリジン トライアルに参加することを有効にすることはできません。
サードパーティ スクリプトは、次のようなコードを使用して、サードパーティ マッチングを有効にしたトークンを使用する必要があります。これは、サイトのメタタグやヘッダーに含まれていない、スクリプト自体を介して挿入されます。
function addTrialToken(tokenContents) {
const tokenElement = document.createElement('meta');
tokenElement.httpEquiv = 'origin-trial';
tokenElement.content = tokenContents;
document.head.appendChild(tokenElement);
}
第三者トークンが、メタタグ、HTTP ヘッダー、インライン スクリプトではなく、外部スクリプトで提供される
サードパーティ トークンは、トークンを挿入したスクリプトの生成元に照らして検証されますが、静的マークアップのインライン スクリプトと <meta>
タグには生成元(ソース URL)がありません。
つまり、サードパーティ トークンは、<meta>
タグやインライン スクリプトではなく、外部スクリプトを使用して指定する必要があります。トークンを挿入する外部スクリプトのオリジンが、トライアルに登録されているオリジンと一致している限り、その生成元ページと同じオリジンか、別のオリジンかは関係ありません。
このデモは ot-iframe-3p.glitch.me でご覧いただけます。
オリジン トライアル機能へのアクセスは、トライアル トークンの提供に使用された方法でサポートされています
オリジン トライアル機能にアクセスするには、特定の方法でトライアル トークンを提供する必要があります。たとえば、Service Worker と共有ワーカーのオリジン トライアル アクセスを有効にする唯一の方法は、Origin-Trial
ヘッダーでトークンを指定することです。
サブドメインで使用されているトークンでサブドメインの照合が有効になっています
サイトの一部のページでオリジン トライアル機能が動作しない場合は、そのページを提供しているサブドメインでトークンが正しく設定されていることを確認してください。
オリジン トライアルに登録するときは、必要に応じて、オリジンのすべてのサブドメインをマッチングすることもできます。
サードパーティ トークンのサブドメインを照合することもできます。
公開サフィックス リストに含まれているオリジンのサブドメイン トークンは発行されません。たとえば、https://appspot.com や https://github.io などのオリジンは登録できませんが、https://example.appspot.com や https://example.github.io など、そのオリジン内のドメインには登録できます。
トークンが引き続き有効である
トークンは、作成後 6 週間有効です。有効期限を延長するにはフィードバックをお送りください。オリジン トライアル全体でトークンが有効であることを確認する方法については、ウェブ デベロッパー向けオリジン トライアル ガイドをご覧ください。
有効なトークンは、Chrome オリジン トライアルの My Registrations ページで確認できます。
トークンが有効な場合、Chrome DevTools にステータス Success
が表示されます。
トークンの有効期限が切れている場合、DevTools にステータス Expired
が表示され、[My Registrations] ページに [Expired Tokens] セクションが表示されます。
オリジン トライアルが終了していない
オリジン トライアルの終了日は、登録ページで確認できます。
終了したトライアルの場合、DevTools には次のように表示されます。
フィードバックが必要な場合やトークンの有効期限が近づいたときに、自動メールが送信されます。
現在のユーザーがオリジン トライアルを利用可能
有効なトークンが提供されても、一部のユーザーは一部のオリジン トライアルを利用できません。
現在のユーザーがトライアルを使用できない場合は、Chrome DevTools に TrialNotAllowed
の警告が表示されます。
使用制限と提供状況に関する情報は、各オリジン トライアルについて提供されます。
他のウェブ プラットフォーム機能と同様に、機能検出を使用して、オリジン トライアル機能がサポートされていることを確認してから使用する必要があります。
オリジン トライアルの使用制限を超えていない
デフォルトでは、トライアル用の有効なトークンを持つすべてのページで、オリジン トライアル機能が有効になります。
ただし、まれな場合を除き、オリジン トライアルの使用はすべての Chrome ページの読み込みの最大 0.5% に制限されています。 すべての Chrome ユーザーの合計使用量がこの上限を超えると、オリジン トライアル機能は無効になります。 DevTools に、トークンのステータスが「無効」と表示されます。
非推奨トライアルに使用制限はありません。新機能が導入されず、トライアル機能に依存するウェブの割合が高くなるリスクはありません。
トライアルには使用制限のオプションが用意されており、一部のユーザーに対してオリジン トライアル機能が無効になります。このオプションは、以下の機能を提供するオリジン トライアルの登録ページから利用できます。
オリジン トライアル機能に対するユーザーのアクセス権が想定よりも少ないことに気付いた場合、[標準の上限] が選択されていることを確認してください。
iframe には独自のトークンが用意されている
オリジン トライアル機能へのアクセスを許可するには、iframe のメタタグ、HTTP ヘッダー、またはプログラムでトークンを指定する必要があります。iframe は、iframe を含むページで有効になっている機能へのアクセスを継承しません。
ot-iframe.glitch.me は、iframe からのオリジン トライアル機能へのアクセスを示しています。ot-iframe-3p.glitch.me には、複数のクロスオリジン iframe が用意されています。
権限ポリシーが正しく構成されている
一部のオリジン トライアル機能は、Permissions-Policy
ヘッダー(以前の Feature-Policy
ヘッダー)の影響を受ける場合があります。これについては、トライアル機能については実験の意図で確認できます。また、web.dev または developer.chrome.com/blog にある機能に関するデベロッパー向けドキュメントで確認できます。
アクセスしようとしている機能が Permissions-Policy
ディレクティブでブロックされていないことを確認します。Chrome DevTools の [Network] パネルでレスポンス ヘッダーを確認し、[Application] パネルで許可された機能の全リストを表示できます。
ワーカーについてはどうでしょうか。
オリジン トライアル機能は、Service Worker、共有ワーカー、専用ワーカーが利用できます。ただし、Service Worker と共有ワーカーのアクセスを有効にするには、Origin-Trial
ヘッダーでトークンを指定する必要があります。
専用ワーカーは、親ドキュメントで有効になっている機能へのアクセスを継承します。
トークンは機能へのアクセス前に提供されます
トライアル機能にアクセスする前にオリジン トライアル トークンを提供してください。たとえば、ページが JavaScript を介してトークンを提供する場合、トライアル機能にアクセスしようとするコードの前に、トークンを提供するコードが実行されるようにします。
オリジン トライアルのデモ
- メタタグ内のトークン
- ヘッダー内のトークン
- iframe でアクセスされる機能
- サードパーティのスクリプトによって挿入されたトークン
- ot-iframe-3p.glitch.me: クロスオリジンの iframe の例