跨源站点iframe嵌入Google Apps Script Web App无法调用摄像头与定位如何解决?
这是iframe跨源嵌入时的权限策略限制导致的,除了摄像头、麦克风外,地理定位权限也需要显式声明,同时你的iframe代码还存在语法错误,按以下步骤修改即可解决:
- 修正iframe的allow属性,补充地理定位权限声明,明确权限作用范围,完整的allow属性需要包含
geolocation *; camera *; microphone *三个部分 - 修正iframe标签语法错误,你当前的结束标签写为
/iframe,需要改为标准的</iframe>闭合标签 - 确认你嵌入iframe的父站点使用HTTPS协议(本地开发可使用localhost),浏览器禁止HTTP站点调用摄像头、地理定位这类敏感API
- 检查你的Google Web App部署配置:部署时的访问权限需设置为「所有人,甚至匿名用户」,如果仅限制特定账号访问,嵌入时跨源上下文的身份校验会导致敏感API调用失败
修正后的完整iframe代码示例:
<iframe allow="camera *; microphone *; geolocation *" src="https://script.google.com/macros/s/AKfycbzsaOlh4Gp2EJmdyQ9cvkYmezTCsg_9wd6ILjdwTe6MRgNBDitcE5Hijr2sNeBknMvp/exec" width="750" height="1100" frameborder="0" marginheight="0" marginwidth="0" id="cultos" name="cultos"> </iframe>
修改后刷新页面,首次调用功能时浏览器会弹出权限申请提示,授权后即可正常使用。如果仍有异常,可检查浏览器当前站点的权限设置,确认摄像头、定位权限未被手动禁用。
内容的提问来源于stack exchange,提问作者Asamblea Cristiana
相关产品推荐
相关产品推荐

