Accept-Language Reduction のオリジン トライアルに参加する

Accept-Language Reduction は受動的なフィンガープリントを削減するための取り組みである。 表示言語の設定画面でユーザーの言語設定を減らすことで、 Accept-Language ユーザーが最も使用する言語(1 つのみ)のみを送信するようにできます。

Chrome 109 以降 ベータ版では、 オリジン トライアル 受け入れる文言を削減し、サイトが削減された文言の Accept-Language ヘッダー。これにより、サイトは問題を検出して修正できるようになります 削減された Accept-Language が Chrome のデフォルトの動作になる前に、 今後のリリースで予定しています。リリース前にこの機能をテストするには、次の手順を実施します。 必ず、Chrome 109 のリリース日までにオプトインとテストを行ってください(現時点では 2023 年 1 月 10 日に実施予定)。

削減前と削減後の Accept-Language ヘッダーの例を以下に示します。

現在
Accept-Language: en-GB,en;q=0.9,de;q=0.8,fr;q=0.7
提案済み
Accept-Language: en-GB

オリジン トライアルの概要と今後の流れを以下に示します。お客様の オリジン トライアル中に発生した問題や、 Accept-Language Reduction GitHub リポジトリをご覧ください。

Accept-Language とは

言語を受け入れる 文字列はすべての HTTP リクエストで共有され、JavaScript ですべての リソースを定義します。現在のところ、ユーザーのすべてのログが 使用言語を選択できます。

Accept-Language が縮小されるのはなぜですか?

Accept-Language Reduction は受動的なフィンガープリントを削減するための取り組みである。 表示できます。

現在、Accept-Language ヘッダーはすべての HTTP でデフォルトで共有されます。 ブラウザに読み込まれるすべてのリソースに対して JavaScript で公開されます。これは、 にはユーザーのすべての言語設定が含まれます。ブラウザから送信される サイトで使用する言語のリストです 複数言語コンテンツの提供に対応しており、 ブラウザは多言語コンテンツに対応しており、 希望の言語が表示されます

その他の理由として、多くのサイトが Accept-Language ヘッダーを使用していないことが挙げられます。 交渉を一切行いません(例: 調査によると、 上位 10,000 件のサイトが Accept-Language を使用しています)。Chrome のシークレット モードでは、 Accept-Language を 1 に設定します。

ウェブ デベロッパーへの影響

言語の交渉を Accept-Language に依存しているサイトのパブリッシャー様は、 Accept-Languageの減額が適用されるよう準備し、 オリジン トライアル削減された Accept-Language 値は次の場所に表示されます。

  • Accept-Language HTTP リクエスト ヘッダー。
  • navigator.languages JavaScript ゲッター。

ブラウザは、言語ネゴシエーションで サイトに送信する際のユーザーの言語を指定します。これを実現するには、サイトに 2 つのヘッダーを追加 Variants (新しいヘッダーは、各言語に対応しているサイトを示します)Accept-LanguageContent-Language: レスポンス ヘッダー(下記の詳細例を参照)に送られます。

縮小された Accept-Language プランには現在、iOS と WebView は含まれません。 これらのプラットフォームはAccept-Language の完全なリスト。 これらのプラットフォームのサポートは、今後予定されています。

Accept-Language Reduction のオリジン トライアル

オリジン トライアルでは、参加サイトは 指定されたトライアルを有効にするようブラウザに指示します。ただし、 つまり、ブラウザがサイトへの最初のリクエストを行う際、 オリジン トライアルに参加中の場合。つまり、初期の リクエストしても、縮小された Accept-Language header は送信されません。 同じページのサブリソースのリクエスト(同一オリジンとクロスオリジンの両方)は、 削減された Accept-Language ヘッダーを受信する。後続の同一オリジン ナビゲーション 縮小された Accept-Language ヘッダーも受け取ります。クロスオリジン ナビゲーション ヘッダー全体の送信に戻り、ヘッダー内のクロスオリジン リクエストは ページ(サードパーティの iframe リクエストなど)では、引き続き短縮された Accept-Language が送信されます。 ヘッダー。

これは User-Agent の情報量削減元トライアルに類似しており、 内部向けの Chromium 実装について詳しくは、 Reduce Accept-Language HTTP ヘッダーを実装する

Accept-Language Reduction オリジン トライアルに参加する

詳しくは Chrome のオリジン トライアルのスタートガイド 基本的な手順は次のとおりです。

ステップ 1

オリジン トライアルに登録してドメインのトークンを取得するには、 詳しくは、 承認言語の削減のトライアル できます。

ステップ 2

HTTP レスポンス ヘッダーを更新します。

  1. HTTP レスポンスに Origin-Trial: <ORIGIN TRIAL TOKEN> を追加する ヘッダー。ここで <ORIGIN TRIAL TOKEN>その中に取得したトークンが含まれている オリジン トライアルに登録します。
  2. HTTP レスポンス ヘッダーに Content-Language を追加して、 使用する言語。
  3. HTTP レスポンス ヘッダーに Variants を追加してサイトを示す 使用できます。
  4. (省略可)HTTP レスポンスに Vary: Accept-Language を追加する コンテンツ ネゴシエーション用のキャッシュキーを作成します。
  5. これらのヘッダーを設定するとブラウザの言語のみがトリガーされます。 が(最初のリクエストの再起動の可能性)を 含まれます。サイトで正しい言語表現が コンテンツを送信するサイトを更新する必要もあります ユーザーの Accept-Language ヘッダーで設定されます(下記の例を参照)。
で確認できます。

ステップ 3

Chrome M109 ベータ版(またはそれ以降)でウェブサイトを読み込み、 Accept-Language 文字列の削減。

問題やフィードバックは Accept-Language Reduction GitHub に送信します。 リポジトリをご覧ください。

デモ

オリジン トライアルにオプトインした多言語サイトのデモ用 (ソースコードとともに)参照については、 https://reduce-accept-language.glitch.me/.

オリジン トライアルのオプトインとオプトアウトのデモ( ソースコードなど)については、 https://reduce-accept-language-ot.glitch.me/.

たとえば、example.comja(日本語)と en(英語)をサポートしています。 次のようなリクエストが考えられます。

GET / HTTP/1.1
Host: example.com
Accept-Language: en

ユーザーの言語に基づいて、ユーザーが英語のコンテンツを好むことを Accept-language です。レスポンス ヘッダーには次のものが含まれます。

HTTP/1.1 200 OK
Content-Language: en
Variants: Accept-Language=(en ja)
Origin-Token: a-valid-token

ユーザーが日本語のコンテンツを希望される場合、リクエストは次のようになります。

GET / HTTP/1.1
Host: example.com
Accept-Language: ja

この場合、サイトでは日本語コンテンツのヘッダーが返されます。

HTTP/1.1 200 OK
Content-Language: ja
Variants: Accept-Language=(en ja)
Origin-Token: a-valid-token

サーバーサイドでは、サイトが特定の言語のサポートを必要としている場合もありますが、 サポートが検出されない場合のデフォルトにフォールバックする:

if(accept_language == 'ja') {
    res
.response('ja_page')
}
else {
   res
.response('en_page')
}

上記の例では、example.com は、enja Accept-Language の値。一致するものがない場合のデフォルトは en です。この例では、 サイトでは、対応する言語ページ(/en または Accept-Language の値に基づいて /ja。関連の詳細な例を見る: リダイレクトをオン 実装に関するドキュメントをご覧ください。

サードパーティのオリジン トライアルのサポート

現在、お使いのドメインを 試用のためにサードパーティに問い合わせてください。 サブリソースとして実装されるサービスを複数のオリジンで運用している場合 広告配信やアナリティクスなど)では、実際に利用する際は、 トップレベル サイトがオリジンに含まれている場合は、Accept-Language ヘッダー 無償ツールキットで

オリジン トライアルが機能していることを確認する

Google Workspace の Chrome のオリジン トライアルのトラブルシューティング トークンが正しく構成されていることを確認するための完全なチェックリストを提供します。

複数の言語とその優先度は、 chrome://settings/languages または [設定] → [言語] に移動します。まず サイトがサポートしていない言語をリストの先頭に移動します。 追加の再交渉がトリガーされるようにします

オリジン トライアル トークンを含む最初のレスポンスのヘッダーは、 例:

Reduce Accept-Language を含むリクエスト ヘッダーのスクリーンショット。

縮小された Accept-Language を含むその後のリクエスト ヘッダーは、次のようになります。

オリジン トライアル トークンを含む最初のレスポンスのヘッダー。

オリジン トライアルへの参加を停止する

トライアル期間中はいつでも、 ユーザーの Accept-Language の完全なリストを受け取る。参加を停止するには:

  1. Accept-Language Reduction の Origin-Trial ヘッダーを削除 HTTP レスポンスから取得します。
  2. [省略可] オプトインに追加する Variants ヘッダーを削除 オリジン トライアルを HTTP レスポンスに含めます。 使用します。また、空の値を指定して Variants を使用して、 できます。
  3. [省略可] 追加された Content-Language ヘッダーを削除 関心がない場合は HTTP レスポンスのオリジン トライアルをオプトインする このヘッダーが送信されます。

オリジン トライアル期間

Accept-Language Reduction オリジン トライアルは少なくとも 6 か月間実施される。 これは Chrome の約 6 つのマイルストーンに相当しますオリジン トライアルが M109 で始まり、M114 で終わる(試用版の最後の Chrome リリース) あります)。その時点で、Chrome は配信元からのフィードバックを評価します。 値を減らした Accept-Language 文字列を まず、Accept-Language HTTP ヘッダーを小さくしてから、 あります。テストにさらに時間が必要な場合は、後続の デプリケーション オリジン トライアルです。これにより、 Accept-Language 文字列をさらに 6 か月以上継続する。今後さらに 詳しい情報をご確認ください。

フィードバックを共有

問題やフィードバックは Accept-Language Reduction GitHub に送信します。 リポジトリをご覧ください。