Permissions-Policy
Permissions-Policy 响应标头提供了一种可以在本页面或包含的 iframe 上启用或禁止浏览器特性的机制。
更多的信息,请查看Feature Policy
| Header type | Response header | 
|---|---|
| Forbidden header name | yes | 
语法
Permissions-Policy: <directive> <allowlist>
<allowlist>
*: 允许在当前文档和所有包含的内容(比如 iframes)中使用本特性。'self': 允许在当前文档中使用本特性,但在包含的内容(比如 iframes)仍使用原值。'src': (只在 iframe 中允许) 只要在src 中的 URL 和加载 iframe 用的 URL 相同,则本特性在 iframe 中允许,'none': 从最上层到包含的内容都禁止本特性。 <origin(s)>: 在特定的源中允许,源 URL 以空格分割。
*: 本特性默认在最上层和包含的内容中(iframes)允许。'self': 本特性默认在最上层允许,而包含的内容中(iframes)使用源地址相同设定。也就是说本特性在 iframe 中不允许跨域访问。'none': 本特性默认在最上层和包含的内容中(iframes)都禁止。
*(在所有源地址启用)或'none'(在所有源地址禁用) 只允许单独使用,而'self'和'src'可以与多个源地址一起使用。
所有的特性都有一个如下的默认的 allowlist
*: 本特性默认在最上层和包含的内容中(iframes)允许。'self': 本特性默认在最上层允许,而包含的内容中(iframes)使用源地址相同设定。也就是说本特性在 iframe 中不允许跨域访问。'none': 本特性默认在最上层和包含的内容中(iframes)都禁止。
指令
autoplay实验性- 
    
控制是否允许当前文档自动播放媒体。这种控制是通过接口
HTMLMediaElement来实现。当这种规则被禁用,而且没有用户操作的时候,HTMLMediaElement.play()返回的Promise(en-US) 会拒绝并抛出一个DOMException异常。<audio>和<video>上的 autoplay 属性会被忽略。 camera- 
    
控制是否允许当前文档使用视频输入设备。当这种规则被禁用时,
MediaDevices.getUserMedia()返回的Promise会拒绝并抛出NotAllowedErrorDOMException异常。 document-domain(en-US) 实验性- 
    
控制是否允许当前文档设置
document.domain。当这种规则被禁用时,尝试设置document.domain会失败并抛出SecurityErrorDOMException异常。 encrypted-media(en-US) 实验性- 
    
控制是否允许当前文档使用 Encrypted Media Extension (en-US) API(EME)。当这种规则被禁用时,
Navigator.requestMediaKeySystemAccess()(en-US) 返回的Promise(en-US) 会拒绝并抛出DOMException异常。 fullscreen(en-US)- 
    
控制是否允许当前文档使用
Element.requestFullScreen()。当这种规则被禁用时,返回的Promise会拒绝并抛出TypeError。 geolocation(en-US)- 
    
控制是否允许当前文档使用
Geolocation接口。当这种规则被禁用时,调用getCurrentPosition()和watchPosition()会返回包含PERMISSION_DENIED的PositionError。 microphone(en-US)- 
    
控制是否允许当前文档使用音频输入设备。当这种规则被禁用时,
MediaDevices.getUserMedia()返回的Promise会拒绝并抛出错误NotAllowedError。 midi(en-US)- 
    
控制是否允许当前文档使用 Web MIDI API (en-US)。当这种规则被禁用时,
Navigator.requestMIDIAccess()(en-US) 返回的Promise会拒绝并抛出错误DOMException。 payment(en-US)- 
    
控制是否允许当前文档使用 Payment Request API。当这种规则被启用时,构造函数
PaymentRequest()(en-US) 会抛出错误SecurityError。 vr/xr- 
    
控制是否允许当前文档使用 WebVR API。当这种规则被禁用时,
Navigator.getVRDisplays()(en-US) 返回的Promise会拒绝并抛出错误DOMException。 
示例
SecureCorp Inc. 公司想要在应用中禁用震动和定位 API,则可以在返回的 response 中传递以下定义权限策略的 HTTP 的标头信息:
Permissions-Policy: vibrate 'none'; geolocation 'none'
通过使用 'none' 关键词,不管原来如何设定,这些特性在所有浏览的上下文中都会被禁用。
规范
| Specification | 
|---|
| Permissions Policy  # permissions-policy-http-header-field  | 
浏览器兼容性
BCD tables only load in the browser