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 iframeallow
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 iframeallow
attribute only, and is the defaultallowlist
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, oPromise
(en-US) returnado peloHTMLMediaElement.play()
(en-US) irá rejeitar com umaDOMException
. 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 umNotAllowedError
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 pelogetUserMedia()
(en-US) irá rejeitar com umNotAllowedError
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, aPromise
retornada pelogetDisplayMedia()
irá rejeitar com umNotAllowedError
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 colocardocument.domain
(en-US) irão falhar e causar umaSecurityError
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 peloNavigator.requestMediaKeySystemAccess()
(en-US) irá rejeitar com umDOMException
. 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
oudisplay: 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, aPromise
retornada rejeita com umTypeError
DOMException
. - geolocation (en-US)
- Controla se o documento atual é permitido de usar a interface
Geolocation
. Quando a política está desabilitada, chamadas paragetCurrentPosition()
ewatchPosition()
irão causar aos callbacks da funções serem invocados com umPositionError
dePERMISSION_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 peloMediaDevices.getUserMedia()
(en-US) irá rejeitar com umNotAllowedError
. - midi (en-US)
- Controla se o documento atual é permitido de usar a API Web MIDI. Quando esta política está desabilitada, a
Promise
returnada peloNavigator.requestMIDIAccess()
irá rejeitar com umDOMException
. 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 umSecurityError
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)
- Controla se o documento atual é permitido de usar a API WebVR. Quando esta política é desabilitada, o
Promise
returnado peloNavigator.getVRDisplays()
(en-US) irá rejeitar com umDOMException
. 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