Lightning下权限策略禁止display-capture致Aura组件内嵌iframe屏幕共享报错
修复方案
问题根因
Salesforce Lightning 环境的顶层页面默认启用严格的权限策略(Permission Policy)限制,所有内嵌iframe的权限会继承上层页面的规则。即使你在iframe标签上声明了allow属性,只要上层页面未放行display-capture权限,相关请求就会被拦截。Classic 环境没有这套默认的严格权限策略限制,因此功能运行正常。
操作步骤
- 第一步:将iframe的src对应域名添加到Salesforce可信站点
操作路径:设置 → 安全性 → 可信站点,新建可信站点,填入iframe的源域名,勾选所有CSP指令下的媒体、脚本相关访问权限,保存后清空浏览器缓存重试。 - 第二步:配置全局会话权限策略
操作路径:设置 → 安全性 → 会话设置,滚动到页面底部的「权限策略」区域,在允许的功能列表中添加display-capture,保存配置后重新登录Salesforce生效。 - 第三步:调整iframe的allow属性写法
Lightning 跨域iframe需要显式指定权限生效的源范围,修改后的iframe代码如下:
如果你的iframe源域名固定,可以把<iframe aura:id="someId" allow="camera; microphone; fullscreen; display-capture *" src="someURL" onload="{!c.someAction}"/>*替换为具体的源域名,安全性更高。 - 第四步:(可选,针对自定义打包部署的组件)在Aura组件的.meta.xml设计文件中添加权限声明
<design:component> <design:attribute name="allowFeaturePolicy" value="display-capture; camera; microphone; fullscreen"/> </design:component>
补充说明
如果你的Aura组件部署在Experience Cloud(原社区/门户)站点下,还需要单独进入对应站点的管理页面,在「安全与隐私」设置中添加对应可信域名,同时在站点的权限策略配置里放行display-capture权限。
内容的提问来源于stack exchange,提问作者Jesus Sanchez
相关产品推荐
相关产品推荐

