Chrome扩展中嵌入iframe失败,是否需额外配置CSP规则?
解决Chrome扩展嵌入iframe的CSP拦截问题
问题原因
你遇到的报错核心是:Chrome扩展页面使用的是chrome-extension://协议,而当前CSP配置里的frame-ancestors *并不包含这类协议——*仅匹配http、https、ws、wss这类网络协议,或是与当前页面协议一致的地址,所以扩展页面被拦截了。
修复方案
在后端的CSP头部配置中,给frame-ancestors指令显式添加chrome-extension://*,修改后的配置示例如下:
frame-ancestors * chrome-extension://*;
这样就能允许所有Chrome扩展嵌入你的iframe。如果需要更严格的权限控制,也可以把*替换成具体的扩展ID,比如chrome-extension://xxxxxxxxx/(xxxxxxxxx为目标扩展的ID)。
注意事项
修改完成后,记得清除浏览器缓存,重新加载扩展和嵌入页面,确保新的CSP规则生效。
内容的提问来源于stack exchange,提问作者Arsene Wenger
相关产品推荐
相关产品推荐

