背景
Chrome 94 では、保護されていない公開ウェブサイトからのプライベート ネットワーク アクセスがブロックされるようになりました。現在実施中のセキュアでないコンテキストからのプライベート ネットワーク アクセスの非推奨トライアルでは、影響を受けたウェブサイトを HTTPS に移行するうえでの課題が明らかになりました。一般的な懸念は、プライベート デバイスを HTTPS に移行する難しさで、混合コンテンツ チェック違反につながります。
前述の課題に対処するため、Chrome 120 の新しい権限プロンプトがオリジン トライアルで利用可能になりました
新しいオプションとしての権限プロンプト
新しい targetAddressSpace
属性を取得オプションとして追加すると、リクエストで混合コンテンツのチェックをスキップできるようになります。
例:
fetch("http://router.local/ping", {
targetAddressSpace: "private",
});
プライベート ネットワーク アクセス: プリフライトの導入では、プライベート ネットワーク リクエストの前にプリフライト リクエストがあります。このプリフライト リクエストには新しいヘッダー Access-Control-Request-Private-Network: true
が含まれ、対応するレスポンスにはヘッダー Access-Control-Allow-Private-Network: true
を含める必要があります。
新しい権限プロンプトに対応するために、Private-Network-Access-Name
と Private-Network-Access-ID
という 2 つの新しいレスポンス ヘッダーを組み込むことをデバイスに求めました。
Private-Network-Access-Name: <some human-readable device name>
Private-Network-Access-ID: <the MAC address of the device>
例:
Private-Network-Access-Name: "My Smart Toothbrush"
Private-Network-Access-ID: "01:23:45:67:89:0A"
Private-Network-Access-ID
: 48 ビット値。コロンで区切られた 6 16 進バイトとして表されます。Private-Network-Access-Name
: ECMAScript 正規表現 /^[a-z0-9_-.]+$/
に一致する文字列としての有効な名前。名前の最大長は UTF-8 コード単位 248 です。
デモ
デモは https://private-network-access-permission-test.glitch.me/ でご覧いただけます。
オリジン トライアルに登録する
プライベート ネットワーク アクセスの権限プロンプトにより、デベロッパーがプライベート ネットワーク アクセスに安全なコンテキスト制限を導入しやすくなるよう、Chrome のバージョン 120 ~ 122 でオリジン トライアルとしてこの機能を利用できるようにしました。
オリジン トライアルに登録して、ウェブサイトで権限プロンプトを使用できるようにします。
- 送信元のトークンをリクエストします。
- トークンは次のいずれかの方法で使用します。
- HTML 内:
html <meta http-equiv="Origin-Trial" content="TOKEN_GOES_HERE">
- JavaScript で次のようにします。
js const meta = document.createElement('meta'); meta.httpEquiv = 'Origin-Trial'; meta.content = 'TOKEN_GOES_HERE'; document.head.append(meta);
- HTTP ヘッダー:
text Origin-Trial: TOKEN_GOES_HERE
- HTML 内:
この機能に関するフィードバックや提案については、GitHub リポジトリで問題を報告してください。