加载iframe时遭遇CSP违规错误,配置frame-src仍未解决
解决CSP frame-src拒绝blob:资源的问题
问题分析
你配置的frame-src包含'self'、blob:和*.xxx.com,但控制台报错显示生效的frame-src只有*.xxx.com *.xxx.cn,说明实际生效的CSP规则和你配置的不一致,导致blob:资源被拦截。
排查与解决步骤
- 确认实际生效的CSP规则:打开浏览器开发者工具的「Network」面板,找到对应请求的响应头,查看
Content-Security-Policy字段,确认返回的frame-src是否包含'self'和blob:。如果没有,说明配置未正确加载。 - 检查重复/冲突的CSP配置:排查web.config中是否存在多个CSP配置(比如不同
<location>节点),或者代码中是否通过Response.Headers动态添加了CSP规则,导致你的配置被覆盖。确保所有CSP规则合并后,frame-src包含所需源。 - 修正frame-src配置:确保web.config中的
frame-src指令格式正确,包含所有需要的源,示例如下:
注意:<add name="Content-Security-Policy" value="frame-src 'self' blob: *.xxx.com *.xxx.cn; default-src 'self'; img-src 'self' data:;" />'self'需要加单引号,blob:作为scheme不需要单引号;如果报错中出现*.xxx.cn,说明该源是业务需要,需加入配置。 - 清除缓存并重启服务:修改配置后重启服务器,清空浏览器缓存,重新测试,确认响应头的CSP规则已更新,再验证图片/PDF加载是否正常。
内容的提问来源于stack exchange,提问作者Akshitha Jain
相关产品推荐
相关产品推荐

