Feature-Policy - HTTP 编辑
这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。
Feature-Policy
响应头提供了一种可以在本页面或包含的iframe上启用或禁止浏览器特性的机制。更多的信息,请查看Feature Policy
Header type | Response header |
---|---|
Forbidden header name | yes |
语法
Feature-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
会拒绝并抛出一个DOMException
异常。在<audio>
和<video>
上的autoplay属性会被忽略。 camera
- 控制是否允许当前文档使用视频输入设备。当这种规则被启用时,
MediaDevices.getUserMedia()
返回的thePromise
会拒绝并抛出错误NotAllowedError。
document-domain
- 控制是否允许当前文档设置
document.domain
。当这种规则被启用时,尝试设置document.domain
会失败并抛出SecurityError
DOMException
异常。 encrypted-media
- 控制是否允许当前文档使用Encrypted Media Extensions API (EME)。当这种规则被启用时,
Navigator.requestMediaKeySystemAccess()
返回的Promise
会拒绝并抛出DOMException
异常。 fullscreen
- 控制是否允许当前文档使用
Element.requestFullScreen()
。当这种规则被启用时,返回的Promise
会拒绝并抛出TypeError
。 geolocation
- 控制是否允许当前文档使用
Geolocation
接口。当这种规则被启用时,调用getCurrentPosition()
和watchPosition()
会返回包含PERMISSION_DENIED
的PositionError
。 microphone
- 控制是否允许当前文档使用音频输入设备。当这种规则被启用时,
MediaDevices.getUserMedia()
返回的thePromise
会拒绝并抛出错误NotAllowedError。
midi
- 控制是否允许当前文档使用Web MIDI API。当这种规则被启用时,
Navigator.requestMIDIAccess()
返回的thePromise
会拒绝并抛出错误DOMException。
payment
- 控制是否允许当前文档使用Payment Request API。当这种规则被启用时,构造器
PaymentRequest()
会抛出错误SecurityError。
vr
/xr
- 控制是否允许当前文档使用WebVR API。当这种规则被启用时,
Navigator.getVRDisplays()
返回的thePromise
会拒绝并抛出错误DOMException。
示例
SecureCorp Inc. 公司想要在应用中禁用震动和定位API,则可以在返回的response中传递以下定义feature policy的HTTP的头部信息:
Feature-Policy: vibrate 'none'; geolocation 'none'
通过使用'none'
关键词,不管原来如何设定,这些特性在所有浏览的上下文中都会被禁用。
规范
Specification | Status | Comment |
---|---|---|
Permissions Policy Feature-Policy | Editor's Draft | Initial definition. |
浏览器兼容
BCD tables only load in the browser
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.参见
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论