Feature-Policy

O cabeçalho HTTP Feature-Policy provê um mecanismo para permitir ou proibir o uso de funcionalidades do navegador no seu próprio enquadramento, e o conteúdo dentro de quaisquer elementos <iframe> no documento.

Nota: Este cabeçalho ainda está em estado experimental, e é sujeito a mudança a qualquer momento. Tenha cautela quando implementando isso no seu site. O cabeçalho agora foi renomeado para Permissions-Policy na especificação, e este artigo irá eventualmente ser atualizado para refletir estas atualizações.

Para mais informação, veja o artigo principal Policy Feature.

Tipo de cabeçalho Response header (en-US)
Forbidden header name sim

Sintaxe

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

A diretiva Feature Policy que irá aplicar a allowlist. Veja Diretivas abaixo para a lista de nomes de diretivas.

<allowlist>
{{page("Web/HTTP/Feature_Policy/Using_Feature_Policy", "allowlist")}}

Diretivas

accelerometer (en-US)

Controla se o documento atual é permitido de coletar informação sobre a aceleração do dispositivo através da interface Accelerometer (en-US).

ambient-light-sensor (en-US)

Controla se o documento atual é permitido de coletar informação sobre a quantidade de luz no ambiente ao redor do dispositivo através da interface AmbientLightSensor (en-US).

autoplay (en-US)

Controla se o documento atual é permitido de tocar a mídia requisitada automaticamente através da interface HTMLMediaElement (en-US). Quando esta política é desabilitada e não há ação do usuário, o Promise (en-US) retornado pelo HTMLMediaElement.play() (en-US) irá rejeitar com uma DOMException (en-US). O atributo autoplay em elementos <audio> e <video> será ignorado.

battery (en-US)

Controla se o uso da API de Status de Bateria é permitido. Quando esta política está desabilitada, o Promise retornado peloNavigator.getBattery() irá rejeitar com um NotAllowedError DOMException (en-US).

camera (en-US)

Controla se o documento atual é permitido de usar entradas de dispositivos de vídeo. Quando esta política está desabilitada, o Promise retornado pelo getUserMedia() (en-US) irá rejeitar com um NotAllowedError DOMException (en-US).

display-capture (en-US)

Controla se o documento atual é permitido ou não de usar o método getDisplayMedia() (en-US) para capturar conteúdos de tela. Quando esta política está desabilitada, a Promise retornada pelo getDisplayMedia() irá rejeitar com um NotAllowedError se a permissão não for obtida para capturar os conteúdos da tela.

document-domain (en-US)

Controle se o documento atual é permitido de colocar document.domain (en-US). Quando esta política está desabilitada, tentativas em colocar document.domain (en-US) irão falhar e causar uma SecurityError DOMException (en-US) a ser jogada.

encrypted-media (en-US)

Controla se o documento atual é permitido de usar a API Extensões de Mídias Encriptadas (Encrypted Media Extensions) (en-US) (EME). Quando esta política é desabilitada, a Promise (en-US) retornada pelo Navigator.requestMediaKeySystemAccess() (en-US) irá rejeitar com um DOMException (en-US).

execution-while-not-rendered

Controla se as tarefas devem ser executadas em enquadramentos enquanto não são renderizados (e.g. se um enquadramento é hidden ou display: none).

execution-while-out-of-viewport

Controla se as tarefas devem ser executadas em enquadramentos enquanto eles estão fora da janela de visualização visível.

fullscreen (en-US)

Controla se o documento atual é permitido de usar Element.requestFullScreen() (en-US). Quando esta política está desabilitada, a Promise retornada rejeita com um TypeError DOMException (en-US).

geolocation (en-US)

Controla se o documento atual é permitido de usar a interface Geolocation. Quando a política está desabilitada, chamadas para getCurrentPosition() e watchPosition() irão causar aos callbacks da funções serem invocados com um PositionError de PERMISSION_DENIED.

gyroscope (en-US)

Controla se o documento atual é permitido de coletar informação sobre a orientação do dispositivo através da interface Gyroscope (en-US).

layout-animations (en-US)

Controla se o documento atual é permitido de mostrar animações de layout.

legacy-image-formats (en-US)

Controla se o documento atual é permitido de mostrar imagens em formatos legados.

magnetometer (en-US)

Controla se o documento atual é permitido de coletar informação sobre a orientação do dispositivo através da interface Magnetometer (en-US).

microphone (en-US)

Controla se o documento atual é permitido de usar entradas de dispositivos de áudio. Quando esta política está desabilitada, a Promise retornada pelo MediaDevices.getUserMedia() (en-US) irá rejeitar com um NotAllowedError.

midi (en-US)

Controla se o documento atual é permitido de usar a API Web MIDI (en-US). Quando esta política está desabilitada, a Promise retornada pelo Navigator.requestMIDIAccess() (en-US) irá rejeitar com um DOMException (en-US).

Controla a disponibilidade de mecanismos que habilitam o autor da página a tomar controle sobre o comportamento da navegação espacial (spatial navigation), ou cancelar completamente.

oversized-images (en-US)

Controla se o documento atual é permitido de baixar e mostrar imagens grandes.

payment (en-US)

Controla se o documento atual permite o uso da API de Requisição de Pagamento (Payment Request API) (en-US). Quando esta política está desabilitada, o construtor PaymentRequest() (en-US) irá jogar um SecurityError DOMException (en-US).

picture-in-picture (en-US)

Controla se o documento atual permite que um vídeo seja permitido tocar no modo Picture-in-Picture através da API correspondente.

publickey-credentials-get (en-US)

Controla se o documento atual é permitido de usar a API de Autenticação Web (en-US) para resgatar credenciais de chave pública já guardadas, i.e. através do navigator.credentials.get({publicKey: ..., ...}) (en-US).

sync-xhr (en-US)

Controla se o documento atual é permitido de fazer requisições síncronas XMLHttpRequest.

usb (en-US)

Controla se o documento atual é permitido de usar a API WebUSB.

vr (en-US) Deprecated

Controla se o documento atual é permitido de usar a API WebVR. Quando esta política é desabilitada, o Promise retornado pelo Navigator.getVRDisplays() (en-US) irá rejeitar com um DOMException (en-US). Tenha em mente que o padrão WebVR está em processo de ser substituído pelo WebXR (en-US).

wake-lock (en-US)

Controla se o documento atual é permitido de usar a API Wake Lock para indicar que o dispositivo não deve entrar em modo de economia de energia.

screen-wake-lock (en-US)

Controla se o documento atual é permitido de utilizar a API Screen Wake Lock (en-US) para indicar se o dispositivo deve ou não escurecer a tela.

xr-spatial-tracking (en-US)

Controla se o documento atual é permitido ou não de usar a API WebXR Device (en-US) para intergir com a sessão WebXR.

Exemplos

SecureCorp Inc. quer desabilitar o Microfone e as APIs de Geolocalização em sua aplicação. Isso pode ser feito entregando o seguinte cabeçalho de resposta HTTP para definir a política de funcionalidade:

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

Especificando a palavra-chave 'none' para a lista de origem, as funcionalidades especificadas serão desabilitadas para todos os contextos de navegaçnao (incluindo todos os iframes), independente da origem.

Especificações

Specification
Permissions Policy
# permissions-policy-http-header-field

Compatibilidade com navegadores

BCD tables only load in the browser

Veja também