Feature-Policy

O cabeçalho HTTP Feature-Policy provém 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.

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>

An allowlist is a list of origins that takes one or more of the following values, separated by spaces:

  • *: The feature will be allowed in this document, and all nested browsing contexts (iframes) regardless of their origin.
  • 'self': The feature will be allowed in this document, and in all nested browsing contexts (iframes) in the same origin.
  • 'src': (In an iframe allow attribute only) The feature will be allowed in this iframe, as long as the document loaded into it comes from the same origin as the URL in the iframe's src attribute.
    The 'src' origin is used in the iframe allow attribute only, and is the default allowlist value. 
  • 'none': The feature is disabled in top-level and nested browsing contexts.
  • <origin(s)>: The feature is allowed for specific origins (for example, https://example.com). Origins should be separated by a space.

The values * (enable for all origins) or 'none' (disable for all origins) may only be used alone, while 'self' and 'src' may be used with one or more origins.

Features are each defined to have a default allowlist, which is one of:

  • *: The feature is allowed by default in top-level browsing contexts and all nested browsing contexts (iframes).
  • 'self': The feature is allowed by default in top-level browsing contexts and in nested browsing contexts (iframes) in the same origin. The feature is not allowed in cross-origin documents in nested browsing contexts.
  • 'none': The feature is disabled in top-level and nested browsing contexts.

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) returnado pelo HTMLMediaElement.play() (en-US) irá rejeitar com uma DOMException. 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 returnado peloNavigator.getBattery() (en-US) irá rejeitar com um NotAllowedError DOMException.
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 returnado pelo getUserMedia() (en-US) irá rejeitar com um NotAllowedError DOMException.
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 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) (EME). Quando esta política é desabilitada, a Promise (en-US) returnada pelo Navigator.requestMediaKeySystemAccess() (en-US) 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 (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.
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 returnada 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. Quando esta política está desabilitada, a Promise returnada pelo Navigator.requestMIDIAccess() irá rejeitar com um DOMException.
navigation-override
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). Quando esta política está desabilitada, o construtor PaymentRequest() (en-US) irá jogar um SecurityError DOMException.
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 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) This deprecated API should no longer be used, but will probably still work.
Controla se o documento atual é permitido de usar a API WebVR. Quando esta política é desabilitada, o Promise returnado pelo Navigator.getVRDisplays() (en-US) irá rejeitar com um DOMException. Tenha em mente que o padrão WebVR está em processo de ser substituído pelo WebXR.
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 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 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

Especificação Status Comentário
Permissions Policy
The definition of 'Permissions-Policy' in that specification.
Rascunho editorial

Compatibilidade de navegador

BCD tables only load in the browser

Veja também