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
会拒绝并抛出NotAllowedError
DOMException
异常。 document-domain
(en-US) 实验性-
控制是否允许当前文档设置
document.domain
。当这种规则被禁用时,尝试设置document.domain
会失败并抛出SecurityError
DOMException
异常。 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