Feature-Policy - HTTP 编辑

这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

  Feature-Policy响应头提供了一种可以在本页面或包含的iframe上启用或禁止浏览器特性的机制。

更多的信息,请查看Feature Policy

Header typeResponse header
Forbidden header nameyes

语法

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()返回的the Promise会拒绝并抛出错误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()返回的the Promise会拒绝并抛出错误NotAllowedError。
midi
控制是否允许当前文档使用Web MIDI API。当这种规则被启用时,Navigator.requestMIDIAccess() 返回的the Promise会拒绝并抛出错误DOMException。
payment
控制是否允许当前文档使用Payment Request API。当这种规则被启用时,构造器PaymentRequest() 会抛出错误SecurityError。
vr / xr
控制是否允许当前文档使用WebVR API。当这种规则被启用时,Navigator.getVRDisplays() 返回的the Promise会拒绝并抛出错误DOMException。

示例

SecureCorp Inc. 公司想要在应用中禁用震动和定位API,则可以在返回的response中传递以下定义feature policy的HTTP的头部信息:

Feature-Policy: vibrate 'none'; geolocation 'none'

通过使用'none'关键词,不管原来如何设定,这些特性在所有浏览的上下文中都会被禁用。

规范

SpecificationStatusComment
Permissions Policy
Feature-Policy
Editor's DraftInitial 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

词条统计

浏览:102 次

字数:11915

最后编辑:7 年前

编辑次数:0 次

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文