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
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>

Diretivas

accelerometer

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

ambient-light-sensor

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.

autoplay

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

battery

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.

camera

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() irá rejeitar com um NotAllowedError DOMException.

display-capture

Controla se o documento atual é permitido ou não de usar o método getDisplayMedia() 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

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

encrypted-media

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

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

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

geolocation

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

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

layout-animations

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

legacy-image-formats

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

magnetometer

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

microphone

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() irá rejeitar com um NotAllowedError.

midi

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

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

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

payment

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

picture-in-picture

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

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

sync-xhr

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

usb

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

vr Deprecated

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

wake-lock

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

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

xr-spatial-tracking

Controla se o documento atual é permitido ou não de usar a API WebXR Device 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

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Permissions-Policy
Experimental
accelerometer
Experimental
ambient-light-sensor
Experimental
attribution-reporting
Experimental
autoplay
Experimental
bluetooth
Experimental
browsing-topics
ExperimentalNon-standard
camera
Experimental
compute-pressure
Experimental
cross-origin-isolated
Experimental
display-capture
Experimental
document-domain
Experimental
encrypted-media
Experimental
fullscreen
Experimental
geolocation
Experimental
gyroscope
Experimental
hid
Experimental
identity-credentials-get
Experimental
idle-detection
Experimental
local-fonts
Experimental
magnetometer
Experimental
microphone
Experimental
midi
Experimental
otp-credentials
Experimental
payment
Experimental
picture-in-picture
Experimental
publickey-credentials-create
Experimental
publickey-credentials-get
Experimental
screen-wake-lock
Experimental
serial
Experimental
storage-access
Experimental
usb
Experimental
web-share
Experimental
Wildcards in Permissions-Policy allowlist origins
Experimental
window-management
Experimental
xr-spatial-tracking
Experimental

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
Experimental. Expect behavior to change in the future.
Non-standard. Check cross-browser support before using.
See implementation notes.
User must explicitly enable this feature.
Uses a non-standard name.
Has more compatibility info.

Veja também