Chrome扩展如何重置网站媒体权限 实现iframe独立申请媒体权限
Chrome扩展跨站点视频推流的媒体权限隔离问题
我目前正在开发一款Chrome扩展,基于Agora SDK实现用户在任意网站的视频流推流功能,扩展会在当前打开的标签页内展示推流画面,推流能力通过Agora库实现。
Agora库会向当前访问的网站申请摄像头、麦克风类媒体权限:例如用户处于w3schools.com站点时,媒体权限会直接授予w3schools.com。

若为每一个需要注入JS、启动视频推流的站点都授予媒体权限存在严重安全隐患:这类站点后续运行的其他脚本可能私自访问用户的摄像头与麦克风,因此我需要寻找限制站点权限的可行方案。
初始iframe嵌入方案测试
我最初尝试的方案无需给w3schools.com授予媒体权限即可在标签页内展示视频流:将视频推流代码部署在扩展所属的自有站点mywebsite.com上,仅给自有站点授予媒体权限,再将mywebsite.com嵌入w3schools.com页面内展示。
我尝试将mywebsite.com通过iframe嵌入w3schools.com页面,由iframe内的自有站点发起权限申请,但该方案失效:Chrome会将媒体权限授予顶层的w3schools.com,再将权限传递给运行自有站点的iframe。测试代码如下:
<!--Allow camera and microphone access within the context of this iframe--> <iframe src="https://mywebsite.com" allow="camera;microphone"></iframe> <!--Other content of w3schools.com goes here-->
临时权限方案排查结果
后续我也尝试寻找给w3schools.com临时授予媒体权限、推流结束后自动撤销权限的方案,但未找到可行实现路径:
- 未找到通过JS撤销/重置站点媒体权限的方法;
- 未找到通过Chrome扩展API撤销/重置站点媒体权限的方法;
- 未找到给标签页临时授予媒体权限(有效期至标签页关闭或指定时长)的方法;
- 未找到通过代码访问
chrome://settings/content/siteDetails?site=https%3A%2F%2Fwww.w3schools.com页面修改站点权限的方法。
待解决核心问题
目前我有两个核心问题待解决:
- 如何通过Chrome扩展撤销指定网站的媒体访问权限?
- 是否存在可行方案,能在w3schools.com这类第三方站点内嵌入自有站点
https://mywebsite.com时,让媒体权限申请的主体为https://mywebsite.com而非顶层的第三方站点?
内容的提问来源于stack exchange,提问作者Abozanona
相关产品推荐
相关产品推荐

