为何Chromium内核浏览器中embed加载PDF会违反CSP的frame-src指令
行为原因说明
这是Chromium内核的既定实现逻辑,不属于漏洞或Bug:
- Chromium内置PDF阅读器处理
<embed>、<object>标签指向的PDF资源时,不会直接通过插件容器加载资源,而是会在内部自动创建一个隐藏iframe来承载内置PDF阅读器的页面逻辑,再在该iframe中加载目标PDF资源。 - 正是因为多了这层内部创建iframe的步骤,所以CSP规则会触发
frame-src校验,未显式配置frame-src时就会回退到child-src规则,和你观察到的报错提示一致。 - Firefox、Safari的PDF阅读器实现逻辑没有内部创建iframe的步骤,因此仅校验
object-src规则即可正常加载,和Chromium系浏览器表现存在差异。
兼容修复方案
如果你需要在Chromium系浏览器中正常加载PDF,可选两种修复方式:
- 方式1:显式在CSP配置中补充
frame-src规则,允许对应PDF资源的域名。你示例中的配置可修改为:
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; child-src 'none'; frame-src https://www.w3.org; object-src https://www.w3.org; connect-src *;" />
- 方式2:直接改用
<iframe>标签加载PDF资源,逻辑和Chromium的内部实现对齐,CSP规则配置更统一。
内容的提问来源于stack exchange,提问作者Cory Harper
相关产品推荐
相关产品推荐

