---
title: Feature-Policy
slug: Web/HTTP/Headers/Feature-Policy
tags:
- Authorization
- Experimental
- Feature Policy
- Feature-Policy
- HTTP
- Permissions
- Reference
- Security
- Web
- header
translation_of: Web/HTTP/Headers/Feature-Policy
---
{{HTTPSidebar}}
HTTP の Feature-Policy
ヘッダーは、自身のフレームおよび文書内の {{HTMLElement("iframe")}} 要素で、ブラウザーの機能を使用することを許可または拒否する仕組みを提供します。
このヘッダーはまだ実験的な状態であり、随時変更される可能性があります。ウェブサイトに実装する際には注意してください。現在、このヘッダーは仕様では Permissions-Policy
に改名されており、この記事は最終的にはその変更を反映して更新される予定です。
詳しくは、機能ポリシーの記事を参照してください。
ヘッダー種別 |
{{Glossary("Response header", "レスポンスヘッダー")}} |
{{Glossary("Forbidden header name", "禁止ヘッダー名")}} |
はい |
構文
Feature-Policy: <directive> <allowlist>
<directive>
allowlist
に適用される機能ポリシーディレクティブです。許可されているディレクティブ名の一覧は、以下の{{anch("Directives", "ディレクティブ")}}を参照してください。
<allowlist>
- {{page("/ja/docs/Web/HTTP/Feature_Policy/Using_Feature_Policy", "allowlist")}}
ディレクティブ
- {{httpheader('Feature-Policy/accelerometer','accelerometer')}}
- 現在の文書が、端末の加速度に関する情報を、 {{DOMxRef("Accelerometer")}} インターフェイスを通じて収集することを許可するかどうかを制御します。
- {{httpheader('Feature-Policy/ambient-light-sensor','ambient-light-sensor')}}
- 現在の文書が、端末の周囲の環境における光量についての情報を、 {{DOMxRef("AmbientLightSensor")}} インターフェイスを通じて収集することを許可するかどうかを制御します。
- {{httpheader('Feature-Policy/autoplay','autoplay')}}
- 現在の文書で {{domxref("HTMLMediaElement")}} インターフェイスがメディアの自動再生をリクエストすることを無効にするかどうかを制御します。このポリシーが有効であり、ユーザーによる操作がなかった場合、 {{domxref("HTMLMediaElement.play()")}} が返す {{jsxref("Promise")}} が {{domxref("DOMException")}} で拒否されます。 {{HTMLELement("audio")}} および {{HTMLElement("video")}} 要素の
autoplay
属性は無視されます。
- {{httpheader('Feature-Policy/battery','battery')}}
- Battery Status API の使用を許可するかどうかを制御します。このポリシーが無効になっている場合、 {{DOMxRef("Navigator.getBattery","Navigator.getBattery()")}} が返す {{JSxRef("Promise")}} は {{Exception("NotAllowedError")}} の {{DOMxRef("DOMException")}} で拒否されます。
- {{httpheader('Feature-Policy/camera', 'camera')}}
- 現在の文書が動画入力機器を使用することを許可するかどうかを制御します。このポリシーが無効であれば、 {{domxref("MediaDevices.getUserMedia", "getUserMedia()")}} が返す {{jsxref("Promise")}} が {{Exception("NotAllowedError")}} の {{DOMxRef("DOMException")}} で拒否されます。
- {{HTTPHeader('Feature-Policy/display-capture', 'display-capture')}}
- 現在の文書が {{domxref("MediaDevices.getDisplayMedia", "getDisplayMedia()")}} メソッドを使用して画面の内容をキャプチャすることを許可するかどうかを制御します。このポリシーが無効であれば、表示内容をキャプチャする許可がない場合、
getDisplayMedia()
から返却されるプロミスが {{Exception("NotAllowedError")}} で拒否されます。
- {{httpheader('Feature-Policy/document-domain','document-domain')}}
- 現在の文書が {{domxref("document.domain")}} を設定することを許可するかどうかを制御します。このポリシーが無効な場合、 {{domxref("document.domain")}} を設定しようとすると失敗し、 {{Exception("SecurityError")}} の {{domxref("DOMException")}} が発生します。
- {{httpheader('Feature-Policy/encrypted-media', 'encrypted-media')}}
- 現在の文書が Encrypted Media Extensions API (EME) を使用することを許可するかどうかを制御します。このポリシーが無効であれば、 {{domxref("Navigator.requestMediaKeySystemAccess()")}} から返却された {{jsxref("Promise")}} が {{domxref("DOMException")}} で拒否されます。
- {{httpheader('Feature-Policy/execution-while-not-rendered', 'execution-while-not-rendered')}}
- 表示されないフレーム内 (例えば iframe が
hidden
または display: none
の場合) でタスクを実行するかどうかを制御します。
- {{httpheader('Feature-Policy/execution-while-out-of-viewport', 'execution-while-out-of-viewport')}}
- ビューポートの見える範囲外にあるフレーム内のタスクを実行するかどうかを制御します。
- {{httpheader('Feature-Policy/fullscreen','fullscreen')}}
- 現在の文書が {{domxref('Element.requestFullScreen()')}} を使用することを許可するかどうかを制御します。このポリシーが無効であれば、返却された {{jsxref('Promise')}} が {{jsxref('TypeError')}} で拒否されます。
- {{httpheader('Feature-Policy/geolocation','geolocation')}}
- 現在の文書が {{domxref('Geolocation')}} インターフェイスを使用することを許可するかどうかを制御します。このポリシーが無効であれば、 {{domxref('Geolocation.getCurrentPosition','getCurrentPosition()')}} および {{domxref('Geolocation.watchPosition','watchPosition()')}} を呼び出すと、関数のコールバックが呼び出され、 {{domxref('PositionError')}} コードが
PERMISSION_DENIED
になります。
- {{httpheader('Feature-Policy/gyroscope','gyroscope')}}
- 現在の文書が {{DOMxRef("Gyroscope")}} インターフェイスを通じて、端末の方向に関する情報を収集することを許可するかどうかを制御します。
- {{httpheader('Feature-Policy/layout-animations','layout-animations')}}
- 現在の文書がレイアウトアニメーションを表示することを許可するかどうかを制御します。
- {{httpheader('Feature-Policy/legacy-image-formats','legacy-image-formats')}}
- 現在の文書が古い形式の画像を表示することを許可するかどうかを制御します。
- {{httpheader('Feature-Policy/magnetometer','magnetometer')}}
- 現在の文書が {{DOMxRef("Magnetometer")}} インターフェイスを通じて、端末の方向に関する情報を収集することを許可するかどうかを制御します。
- {{httpheader('Feature-Policy/microphone','microphone')}}
- 現在の文書がオーディオ入力端末を使用することを許可するかどうかを制御します。このポリシーが無効であれば、 {{domxref("MediaDevices.getUserMedia()")}} で返却された {{jsxref('Promise')}} が {{Exception("NotAllowedError")}} で拒否されます。
- {{httpheader('Feature-Policy/midi', 'midi')}}
- 現在の文書が Web MIDI API を使用することを許可するかどうかを制御します。このポリシーが無効であれば、 {{domxref("Navigator.requestMIDIAccess()")}} から返却された {{jsxref("Promise")}} が {{domxref("DOMException")}} で拒否されます。
- {{httpheader('Feature-Policy/navigation-override','navigation-override')}}
- ページ作成者が 空間ナビゲーションの動作を制御したり、完全にキャンセルしたりすることができる仕組みの利用可能性を制御します。
- {{httpheader('Feature-Policy/oversized-images','oversized-images')}}
- 現在の文書が大きな画像をダウンロードして表示することを許可するかどうかを制御します。
- {{httpheader('Feature-Policy/payment', 'payment')}}
- 現在の文書が Payment Request API を使用することを許可するかどうかを制御します。このポリシーが有効であれば、 {{domxref("PaymentRequest","PaymentRequest()")}} コンストラクターで {{Exception("SecurityError")}} の {{domxref("DOMException")}} が発生します。
- {{httpheader('Feature-Policy/picture-in-picture', 'picture-in-picture')}}
- 現在の文書が、該当する API を使用して Picture-in-Picture モードで動画を再生することを許可するかどうかを制御します。
- {{httpheader("Feature-Policy/publickey-credentials-get", "publickey-credentials-get")}}
- 現在の文書が Web Authentication API を使用して、すでに保存されている公開鍵認証情報を再取得することを許可するかどうかを制御します (例: {{domxref("CredentialsContainer.get","navigator.credentials.get({publicKey: ..., ...})")}})。
- {{httpheader('Feature-Policy/sync-xhr', 'sync-xhr')}}
- 現在の文書が同期 {{DOMxRef("XMLHttpRequest")}} リクエストを行うことを許可するかどうかを制御します。
- {{httpheader('Feature-Policy/usb', 'usb')}}
- 現在の文書が WebUSB API を使用することを許可するかどうかを制御します。
- {{httpheader('Feature-Policy/vr', 'vr')}} {{deprecated_inline}}
- 現在の文書が WebVR API の使用を許可されているかどうかを制御します。このポリシーが無効になっている場合、 {{domxref("Navigator.getVRDisplays","Navigator.getVRDisplays()")}} が返す {{jsxref("Promise")}} は {{domxref("DOMException")}} で拒否されます。 WebVR 標準は WebXR に置き換えられつつあることに留意してください。
- {{httpheader('Feature-Policy/wake-lock', 'wake-lock')}}
- 現在の文書が Wake Lock API を使用して、端末が省電力モードに入らないことを示すことを許可するかどうかを制御します。
- {{httpheader('Feature-Policy/screen-wake-lock', 'screen-wake-lock')}}
- 現在の文書が Screen Wake Lock API を使用して、端末が画面をオフにしたり暗くしたりしてはいけないことを示すことを許可するかどうかを制御します。
- {{httpheader("Feature-Policy/web-share", "web-share")}}
- 現在の文書が Web Share API の {{domxref("Navigator.share","Navigator.share()")}} を使用して、テキスト、リンク、画像、その他のコンテンツをモバイルアプリなどのユーザーが任意に選択した任意の場所に共有することを許可するかどうかを制御します。
- {{httpheader("Feature-Policy/xr-spatial-tracking", "xr-spatial-tracking")}}
- 現在の文書が WebXR Device API を使用して WebXR セッションと対話することを許可するかどうかを制御します。
例
SecureCorp Inc. が、アプリケーションでマイクと Geolocation API を無効にしたがっているとします。以下の機能ポリシーを設定する HTTP レスポンスヘッダーを配信することで実現できます。
Feature-Policy: microphone 'none'; geolocation 'none'
オリジンのリストに 'none'
キーワードを指定すると、指定された機能がオリジンに関係なく、すべての閲覧コンテキスト (iframe を含む) で無効になります。
仕様書
ブラウザーの互換性
{{Compat("http.headers.Feature-Policy")}}
関連情報