背景:最近在开发一些产品经常用到iframe这个古老的标签(由于公司许多产品都存在功能耦合),当被嵌入的站点使用到clipboard api的地方功能无效,还有用到camera microphone 相关api时,刷新后音视频的声音无法自动播放,等等嵌入式使用时的功能无效问题,原来问题的来源是feature policy策略。
概念
- Web提供的功能和API如果被滥用,可能会带来隐私或安全风险。在某些情况下,您可能希望严格限制在网站上使用此类功能的方式。
- 特征策略提供一种机制去声明哪些功能(web api)可以使用(或者不能使用),在顶级页面或iframe嵌入式框架中控制哪些源(允许列表)可以使用哪些api,借此锁定功能,或限制第三方的内容。
- 允许针对网站中的特定来源或框架启用/禁用功能。该功能在可用时与Permissions API或特定于功能的机制集成在一起,以检查该功能是否可用.
功能包括
-
加速器
-
环境光源感测器
-
音视频自动播放
-
摄像功能
-
麦克风
-
加密媒体信息
-
全屏功能
-
地理位置
-
陀螺仪
-
延迟加载
-
Midi
-
支付请求
-
画中画(Picture-in-picture)
-
扬声器
-
USB
-
VR / XR
-
通过JavaScript api(document.featurePolicy.allowedFeatures())可以枚举全部的功能:
- [“geolocation”, “midi”, “camera”, “usb”, “autoplay”,…]
- [“geolocation”, “midi”, “camera”, “usb”, “autoplay”,…]