Client Hintsとは
Client Hints(クライアント・ヒンツ)とは、ブラウザが対応機能や端末情報の一部を、要求された範囲でHTTPヘッダーとして伝える仕組みです。サーバーが利用したいヒントを応答で示し、ブラウザーが許可できる情報を後続要求へ載せます。
最初から大量の端末情報を一つの識別文字列で送るのではなく、情報を必要とするオリジンと必要な項目を明示し、ブラウザーのプライバシー方針や利用者設定を通して提供する設計です。
ヒントは「問い合わせれば必ず得られる値」ではありません。ブラウザーの対応、安全文脈、権限、プライバシー判断、要求の段階によって、送信されない・粗い値になる場合があります。

やり取りを五つに分ける
既定で送信できる低エントロピーヒント以外は、まだ揃わないことがあります。
応答ヘッダーで、今後受け取りたいクライアントヒントフィールド名を列挙します。
安全文脈、権限、利用者設定、プライバシー方針を適用します。
表示幅、機器画素ratio、UA関連情報等を対応フィールドで送ります。
画像解像度やレイアウト候補を選び、キャッシュ鍵との整合も取ります。
Accept-CHは同じ要求を過去へ戻して書き換えない
サーバーが応答でAccept-CHを送っても、その応答を生んだ初回要求へヒントが後から加わるわけではありません。ブラウザーはオリジンに対する選択を記憶し、次の要求で利用します。
最初のナビゲーション応答を作る前から不可欠なヒントがある場合はCritical-CH(クリティカル・シーエイチ)で再要求を促せますが、再送は遅延を増やします。基本表現をヒントなしでも成立させ、ヒントは最適化へ使う設計が安定します。
低エントロピーと高エントロピーは「安全/危険」の二択ではない
entropy(エントロピー)は、値の組合せが利用者をどの程度細かく区別できるかを見る考え方です。多くのブラウザーで広く共通する粗い情報は既定提供しやすく、モデル・アーキテクチャー・完全バージョンなど細かい情報は明示要求やAPI呼出しの対象になります。
低エントロピー情報もIPアドレス、Cookie、画面特性などと結合すれば識別材料になり得ます。高エントロピー情報も暗号学的な端末証明ではありません。必要最小限の項目、保持期間、利用目的を決めます。
一般のClient HintsとUA-CHを同一視しない
Client HintsはHTTP上の提供モデルです。その利用例には表示幅や機器画素ratio等のコンテンツ交渉用ヒントがあり、別の一群としてUser-Agent Client Hints(ユーザー・エージェント・クライアント・ヒンツ)があります。
UA-CHはブラウザーブランド、プラットフォーム、アーキテクチャー等を構造化フィールドへ分けます。従来のUser-Agent文字列より解析しやすくても、全ブラウザーが同じ項目を提供するわけではなく、値はユーザーエージェントの申告です。
キャッシュはヒントごとの応答を混ぜない
同じURLでも表示領域幅や画素密度によって異なる画像を返すなら、共有キャッシュが別利用者へ誤ったvariantを返さないようVary等で選択軸を表します。ただしヒントを増やすほどキャッシュ鍵が細分化され、該当率が下がります。
可能ならレスポンシブ画像、CSSメディア問い合わせ、クライアント側選択で解決し、サーバー側variantが本当に有利な項目だけを使います。CDNが該当フィールドをキャッシュ鍵へ含めるかも確認します。
埋め込み先への委譲には権限境界がある
最上位ページが受け取れるヒントを、cross-origin iframeやリソースオリジンへ自動的にすべて渡す設計ではありません。Permissions Policy(パーミッションズ・ポリシー)による委譲と、対象オリジン側のAccept-CHを整合させます。
Client Hintsは、サーバーの要求をきっかけにブラウザーが必要項目だけを提供する交渉です。値を前提条件や本人証明にせず、欠落時の表示、キャッシュ、プライバシーを同時に設計します。
Client HintsのHTTP交渉、Accept-CH、Critical-CH、cacheとprivacy要件:RFC 8942「HTTP Client Hints」。UA情報を低entropyと要求型high-entropy valueへ分ける現行提案:WICG「User-Agent Client Hints」(Community Group Report)