1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
---
title: Feature-Policy
slug: Web/HTTP/Headers/Feature-Policy
tags:
- Autorização
- Experimental
- Feature-Policy
- HTTP
- Permissões
- Política de Funcionalidade
- Referencia
- Segurança
- Web
- cabeçalho
translation_of: Web/HTTP/Headers/Feature-Policy
---
<div>{{HTTPSidebar}}</div>
<p><span class="seoSummary">O cabeçalho HTTP <strong><code>Feature-Policy</code></strong> 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 {{HTMLElement("iframe")}} no documento.</span></p>
<div class="note">
<p>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 <code>Permissions-Policy</code> na especificação, e este artigo irá eventualmente ser atualizado para refletir estas atualizações.</p>
</div>
<p>Para mais informação, veja o artigo principal <a href="/docs/Web/HTTP/Feature_Policy">Policy Feature</a>.</p>
<table class="properties">
<tbody>
<tr>
<th scope="row">Tipo de cabeçalho</th>
<td>{{Glossary("Response header")}}</td>
</tr>
<tr>
<th scope="row">{{Glossary("Forbidden header name")}}</th>
<td>sim</td>
</tr>
</tbody>
</table>
<h2 id="Sintaxe">Sintaxe</h2>
<pre class="syntaxbox notranslate">Feature-Policy: <directive> <allowlist></pre>
<dl>
<dt><code><directive></code></dt>
<dd>A diretiva Feature Policy que irá aplicar a <code>allowlist</code>. Veja {{anch("Diretivas")}} abaixo para a lista de nomes de diretivas.</dd>
<dt><code><allowlist></code></dt>
<dd>{{page("Web/HTTP/Feature_Policy/Using_Feature_Policy", "allowlist")}}</dd>
</dl>
<h2 id="Diretivas">Diretivas</h2>
<dl>
<dt>{{httpheader('Feature-Policy/accelerometer','accelerometer')}}</dt>
<dd>Controla se o documento atual é permitido de coletar informação sobre a aceleração do dispositivo através da interface {{DOMxRef("Accelerometer")}}.</dd>
<dt>{{httpheader('Feature-Policy/ambient-light-sensor','ambient-light-sensor')}}</dt>
<dd>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 {{DOMxRef("AmbientLightSensor")}}.</dd>
<dt>{{httpheader('Feature-Policy/autoplay','autoplay')}}</dt>
<dd>Controla se o documento atual é permitido de tocar a mídia requisitada automaticamente através da interface {{domxref("HTMLMediaElement")}}. Quando esta política é desabilitada e não há ação do usuário, o {{domxref("Promise")}} returnado pelo {{domxref("HTMLMediaElement.play()")}} irá rejeitar com uma {{domxref("DOMException")}}. O atributo <em>autoplay </em>em elementos {{HTMLELement("audio")}} e {{HTMLElement("video")}} será ignorado.</dd>
<dt>{{httpheader('Feature-Policy/battery','battery')}}</dt>
<dd>Controla se o uso da <a href="/docs/Web/API/Battery_Status_API">API de Status de Bateria</a> é permitido. Quando esta política está desabilitada, o {{JSxRef("Promise")}} returnado pelo{{DOMxRef("Navigator.getBattery","Navigator.getBattery()")}} irá rejeitar com um {{DOMxRef("NotAllowedError")}} {{DOMxRef("DOMException")}}.</dd>
<dt>{{httpheader('Feature-Policy/camera', 'camera')}}</dt>
<dd>Controla se o documento atual é permitido de usar entradas de dispositivos de vídeo. Quando esta política está desabilitada, o {{jsxref("Promise")}} returnado pelo {{domxref("MediaDevices.getUserMedia", "getUserMedia()")}} irá rejeitar com um {{DOMxRef("NotAllowedError")}} {{DOMxRef("DOMException")}}.</dd>
<dt>{{HTTPHeader('Feature-Policy/display-capture', 'display-capture')}}</dt>
<dd>Controla se o documento atual é permitido ou não de usar o método {{domxref("MediaDevices.getDisplayMedia", "getDisplayMedia()")}} para capturar conteúdos de tela. Quando esta política está desabilitada, a {{jsxref("Promise")}} retornada pelo <code>getDisplayMedia()</code> irá rejeitar com um <code>NotAllowedError</code> se a permissão não for obtida para capturar os conteúdos da tela.</dd>
<dt>{{httpheader('Feature-Policy/document-domain','document-domain')}}</dt>
<dd>Controle se o documento atual é permitido de colocar {{domxref("document.domain")}}. Quando esta política está desabilitada, tentativas em colocar {{domxref("document.domain")}} irão falhar e causar uma {{DOMxRef("SecurityError")}} {{domxref("DOMException")}} a ser jogada.</dd>
<dt>{{httpheader('Feature-Policy/encrypted-media', 'encrypted-media')}}</dt>
<dd>Controla se o documento atual é permitido de usar a API <a href="/en-US/docs/Web/API/Encrypted_Media_Extensions_API">Extensões de Mídias Encriptadas (<em>Encrypted Media Extensions</em>)</a> (EME). Quando esta política é desabilitada, a {{domxref("Promise")}} returnada pelo {{domxref("Navigator.requestMediaKeySystemAccess()")}} irá rejeitar com um {{domxref("DOMException")}}.</dd>
<dt>{{httpheader('Feature-Policy/execution-while-not-rendered', 'execution-while-not-rendered')}}</dt>
<dd>Controla se as tarefas devem ser executadas em enquadramentos enquanto não são renderizados (e.g. se um enquadramento é <code><a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/hidden">hidden</a></code> ou <code>display: none</code>).</dd>
<dt>{{httpheader('Feature-Policy/execution-while-out-of-viewport', 'execution-while-out-of-viewport')}}</dt>
<dd>Controla se as tarefas devem ser executadas em enquadramentos enquanto eles estão fora da janela de visualização visível.</dd>
</dl>
<dl>
<dt>{{httpheader('Feature-Policy/fullscreen','fullscreen')}}</dt>
<dd>Controla se o documento atual é permitido de usar {{DOMxRef("Element.requestFullScreen()")}}. Quando esta política está desabilitada, a {{JSxRef("Promise")}} retornada rejeita com um {{JSxRef("TypeError")}} {{DOMxRef("DOMException")}}.</dd>
<dt>{{httpheader('Feature-Policy/geolocation','geolocation')}}</dt>
<dd>Controla se o documento atual é permitido de usar a interface {{domxref('Geolocation')}}. Quando a política está desabilitada, chamadas para {{domxref('Geolocation.getCurrentPosition','getCurrentPosition()')}} e {{domxref('Geolocation.watchPosition','watchPosition()')}} irão causar aos <em>callbacks</em> da funções serem invocados com um {{domxref('PositionError')}} de <code>PERMISSION_DENIED</code>.</dd>
<dt>{{httpheader('Feature-Policy/gyroscope','gyroscope')}}</dt>
<dd>Controla se o documento atual é permitido de coletar informação sobre a orientação do dispositivo através da interface {{DOMxRef("Gyroscope")}}.</dd>
<dt>{{httpheader('Feature-Policy/layout-animations','layout-animations')}}</dt>
<dd>Controla se o documento atual é permitido de mostrar animações de <em>layout</em>.</dd>
</dl>
<dl>
<dt>{{httpheader('Feature-Policy/legacy-image-formats','legacy-image-formats')}}</dt>
<dd>Controla se o documento atual é permitido de mostrar imagens em formatos legados.</dd>
</dl>
<dl>
<dt>{{httpheader('Feature-Policy/magnetometer','magnetometer')}}</dt>
<dd>Controla se o documento atual é permitido de coletar informação sobre a orientação do dispositivo através da interface {{DOMxRef("Magnetometer")}}.</dd>
<dt>{{httpheader('Feature-Policy/microphone','microphone')}}</dt>
<dd>Controla se o documento atual é permitido de usar entradas de dispositivos de áudio. Quando esta política está desabilitada, a {{jsxref("Promise")}} returnada pelo {{domxref("MediaDevices.getUserMedia()")}} irá rejeitar com um <code>NotAllowedError</code>.</dd>
<dt>{{httpheader('Feature-Policy/midi', 'midi')}}</dt>
<dd>Controla se o documento atual é permitido de usar a <a href="/en-US/docs/Web/API/Web_MIDI_API">API Web MIDI</a>. Quando esta política está desabilitada, a {{jsxref("Promise")}} returnada pelo {{domxref("Navigator.requestMIDIAccess()")}} irá rejeitar com um {{domxref("DOMException")}}.</dd>
<dt>{{httpheader('Feature-Policy/navigation-override','navigation-override')}}</dt>
<dd>Controla a disponibilidade de mecanismos que habilitam o autor da página a tomar controle sobre o comportamento da <a href="https://www.w3.org/TR/css-nav/">navegação espacial (spatial navigation)</a>, ou cancelar completamente.</dd>
<dt>{{httpheader('Feature-Policy/oversized-images','oversized-images')}}</dt>
<dd>Controla se o documento atual é permitido de baixar e mostrar imagens grandes.</dd>
<dt>{{httpheader('Feature-Policy/payment', 'payment')}}</dt>
<dd>Controla se o documento atual permite o uso da <a href="/en-US/docs/Web/API/Payment_Request_API">API de Requisição de Pagamento (<em>Payment Request API</em>)</a>. Quando esta política está desabilitada, o construtor {{domxref("PaymentRequest","PaymentRequest()")}} irá jogar um <code>SecurityError</code> {{domxref("DOMException")}}.</dd>
<dt>{{httpheader('Feature-Policy/picture-in-picture', 'picture-in-picture')}}</dt>
<dd>Controla se o documento atual permite que um vídeo seja permitido tocar no modo <em>Picture-in-Picture</em> através da API correspondente.</dd>
<dt>{{httpheader("Feature-Policy/publickey-credentials-get", "publickey-credentials-get")}}</dt>
<dd>Controla se o documento atual é permitido de usar a <a href="/en-US/docs/Web/API/Web_Authentication_API">API de Autenticação Web</a> para resgatar credenciais de chave pública já guardadas, i.e. através do {{domxref("CredentialsContainer.get","navigator.credentials.get({publicKey: ..., ...})")}}.</dd>
<dt>{{httpheader('Feature-Policy/sync-xhr', 'sync-xhr')}}</dt>
<dd>Controla se o documento atual é permitido de fazer requisições síncronas {{DOMxRef("XMLHttpRequest")}}.</dd>
<dt>{{httpheader('Feature-Policy/usb', 'usb')}}</dt>
<dd>Controla se o documento atual é permitido de usar a <a href="https://wicg.github.io/webusb/">API WebUSB</a>.</dd>
<dt>{{httpheader('Feature-Policy/vr', 'vr')}} {{deprecated_inline}}</dt>
<dd>Controla se o documento atual é permitido de usar a <a href="/en-US/docs/Web/API/WebVR_API">API WebVR</a>. Quando esta política é desabilitada, o {{jsxref("Promise")}} returnado pelo {{domxref("Navigator.getVRDisplays","Navigator.getVRDisplays()")}} irá rejeitar com um {{domxref("DOMException")}}. Tenha em mente que o padrão WebVR está em processo de ser substituído pelo <a href="/en-US/docs/Web/API/WebXR_Device_API">WebXR</a>.</dd>
<dt>{{httpheader('Feature-Policy/wake-lock', 'wake-lock')}}</dt>
<dd>Controla se o documento atual é permitido de usar a <a href="https://www.w3.org/TR/wake-lock/">API Wake Lock</a> para indicar que o dispositivo não deve entrar em modo de economia de energia.</dd>
<dt>{{httpheader('Feature-Policy/screen-wake-lock', 'screen-wake-lock')}}</dt>
<dd>Controla se o documento atual é permitido de utilizar a <a href="/en-US/docs/Web/API/Screen_Wake_Lock_API">API Screen Wake Lock</a> para indicar se o dispositivo deve ou não escurecer a tela.</dd>
<dt>{{httpheader("Feature-Policy/xr-spatial-tracking", "xr-spatial-tracking")}}</dt>
<dd>Controla se o documento atual é permitido ou não de usar a <a href="/en-US/docs/Web/API/WebXR_Device_API">API WebXR Device</a> para intergir com a sessão WebXR.</dd>
</dl>
<h2 id="Exemplos">Exemplos</h2>
<p>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:</p>
<pre class="notranslate">Feature-Policy: microphone 'none'; geolocation 'none'</pre>
<p>Especificando a palavra-chave <code>'none'</code> para a lista de origem, as funcionalidades especificadas serão desabilitadas para todos os contextos de navegaçnao (incluindo todos os <em>iframes</em>), independente da origem.</p>
<h2 id="Especificações">Especificações</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">Especificação</th>
<th scope="col">Status</th>
<th scope="col">Comentário</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{SpecName("Feature Policy","#permissions-policy-http-header-field","Permissions-Policy")}}</td>
<td>{{Spec2("Feature Policy")}}</td>
<td></td>
</tr>
</tbody>
</table>
<h2 id="Browser_compatibility">Compatibilidade com navegadores</h2>
<p>{{Compat("http.headers.Feature-Policy")}}</p>
<h2 id="Veja_também">Veja também</h2>
<ul>
<li><a href="/en-US/docs/Web/HTTP/Feature_Policy">Feature Policy</a></li>
<li><a href="/en-US/docs/Web/HTTP/Feature_Policy/Using_Feature_Policy">Usando Feature Policy</a></li>
<li>{{DOMxRef("Document.featurePolicy")}} and {{DOMxRef("FeaturePolicy")}}</li>
<li><a class="external external-icon" href="https://chrome.google.com/webstore/detail/feature-policy-tester-dev/pchamnkhkeokbpahnocjaeednpbpacop" rel="noopener">Feature-Policy Tester (Chrome Developer Tools extensão)</a></li>
<li>{{HTTPHeader("Content-Security-Policy")}}</li>
<li>{{HTTPHeader("Referrer-Policy")}}</li>
</ul>
|