Feature-Policy

これは実験的な機能です。本番で使用する前にブラウザー実装状況をチェックしてください。

HTTP の Feature-Policy ヘッダーは、ウェブサイトでどの機能を許可するかを詳細に記述する仕組みを提供します。

詳しくは、機能ポリシーの記事を参照してください。

ヘッダー種別 レスポンスヘッダー
禁止ヘッダー名 はい

構文

Feature-Policy: <directive> <allowlist>
<allowlist>

許可リストは、以下の値のうち一つを取るオリジンのリストです。

  • *: この機能は既定で、最上位の閲覧コンテキストと、含まれるすべての閲覧コンテキスト (iframe) で許可されます。
  • 'self': (既定値) この機能は既定で、最上位の閲覧コンテキストと、含まれる同じオリジンの閲覧コンテキスト (iframe) で許可されます。この機能は、含まれる閲覧コンテキストにある別なオリジンの文書では許可されません。
  • 'none': この機能は最上位および含まれる閲覧コンテキストで無効になります。
  • <origin(s)>: この機能は特定のオリジン (例えば、 https://example.com) で許可されます。オリジンは空白で区切ってください。

* の値 (すべてのオリジンで有効) または 'none' (すべてのオリジンで無効) は単独でのみ使用できますが、 'self' は一つ以上のオリジンと一緒に使用することができます。

ディレクティブ

fullscreen
現在の文書が Element.requestFullScreen() を使用することを許可するかどうかを制御します。このポリシーが有効であれば、 返却された PromiseTypeError で拒否されます。
geolocation
現在の文書が Geolocation インターフェイスを使用することを許可するかどうかを制御します。このポリシーが有効であれば、 getCurrentPosition() および watchPosition() を呼び出すと、関数のコールバックが呼び出され、 PositionError コードが PERMISSION_DENIED になります。
microphone
現在の文書がオーディオ入力機器を使用することを許可するかどうかを制御します。このポリシーが有効であれば、 MediaDevices.getUserMedia() で返却された PromiseNotAllowedError で拒否されます。

SecureCorp Inc. が、アプリケーションでバイブレーションと Geolocation API を無効にしたがっているとします。以下の機能ポリシーを設定する HTTP レスポンスヘッダーを配信することで実現できます。

Feature-Policy: vibrate 'none'; geolocation 'none'

オリジンのリストに 'none' キーワードを指定すると、指定された機能がオリジンに関係なく、すべての閲覧コンテキストで無効になります。

仕様書

仕様書 状態 備考
Feature Policy
Feature-Policy の定義
ドラフト 初回定義

ブラウザーの対応

機能ChromeEdgeFirefoxInternet ExplorerOperaSafari
基本対応60 なし なし なし47 なし
accelerometer691 なし なし なし562 なし
ambient-light-sensor691 なし なし なし562 なし
animations684 なし なし なし555 なし
autoplay64 なし なし なし51 なし
camera59 なし なし なし48 なし
encrypted-media59 なし なし なし48 なし
fullscreen57 なし なし なし46 なし
geolocation56 なし なし なし45 なし
gyroscope691 なし なし なし562 なし
legacy-image-formats684 なし なし なし555 なし
magnetometer691 なし なし なし562 なし
maximum-downscaling-image684 なし なし なし555 なし
microphone59 なし なし なし48 なし
midi56 なし なし なし45 なし
payment56 なし なし なし45 なし
picture-in-picture なし なし なし なし なし なし
speaker59 なし なし なし48 なし
sync-xhr657 なし なし なし528 なし
unsized-media6610 なし なし なし5311 なし
usb60 なし なし なし47 なし
vibrate56 なし なし なし43 なし
vr62 なし なし なし49 なし
機能Android webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
基本対応6060 なし なし47 なし なし
accelerometer693691 なし なし562 なし なし
ambient-light-sensor693691 なし なし562 なし なし
animations686684 なし なし555 なし なし
autoplay6464 なし なし51 なし なし
camera5959 なし なし48 なし なし
encrypted-media5959 なし なし48 なし なし
fullscreen5757 なし なし46 なし なし
geolocation5656 なし なし45 なし なし
gyroscope693691 なし なし562 なし なし
legacy-image-formats686684 なし なし555 なし なし
magnetometer693691 なし なし562 なし なし
maximum-downscaling-image686684 なし なし555 なし なし
microphone5959 なし なし48 なし なし
midi5656 なし なし45 なし なし
payment5656 なし なし45 なし なし
picture-in-picture なし なし なし なし なし なし なし
speaker5959 なし なし48 なし なし
sync-xhr659657 なし なし528 なし なし
unsized-media66126610 なし なし5311 なし なし
usb6060 なし なし47 なし なし
vibrate5656 なし なし43 なし なし
vr6262 なし なし49 なし なし

1. From version 69: this feature is behind the #enable-experimental-productivity-features preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.

2. From version 56: this feature is behind the #enable-experimental-productivity-features preference (needs to be set to Enabled).

3. From version 69: this feature is behind the #enable-experimental-productivity-features preference (needs to be set to Enabled).

4. From version 68: this feature is behind the #enable-experimental-productivity-features preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.

5. From version 55: this feature is behind the #enable-experimental-productivity-features preference (needs to be set to Enabled).

6. From version 68: this feature is behind the #enable-experimental-productivity-features preference (needs to be set to Enabled).

7. From version 65: this feature is behind the #enable-experimental-productivity-features preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.

8. From version 52: this feature is behind the #enable-experimental-productivity-features preference (needs to be set to Enabled).

9. From version 65: this feature is behind the #enable-experimental-productivity-features preference (needs to be set to Enabled).

10. From version 66: this feature is behind the #enable-experimental-productivity-features preference (needs to be set to Enabled). To change preferences in Chrome, visit chrome://flags.

11. From version 53: this feature is behind the #enable-experimental-productivity-features preference (needs to be set to Enabled).

12. From version 66: this feature is behind the #enable-experimental-productivity-features preference (needs to be set to Enabled).

ドキュメントのタグと貢献者

このページの貢献者: mfuji09, jpmedley
最終更新者: mfuji09,