Angular嵌入PDF部署Weblogic时出现Content Security Policy错误如何解决
问题原因
- 本地Angular开发服务器默认没有启用Content Security Policy(CSP)限制,因此Blob格式的PDF资源可以正常加载
- Weblogic服务器默认配置了CSP规则,当前生效的规则中
default-src仅放开了'self'和'unsafe-eval'权限,未包含blob:源的加载许可 - 你使用
<embed>标签加载PDF属于插件类资源,对应的CSP校验优先级为:先校验object-src指令,未配置时会自动 fallback 到default-src指令,因此Blob资源被拦截。你之前参考的图片类Blob修复方案仅修改img-src规则,不覆盖插件资源的校验逻辑,所以无效。
解决方案
- 方案1:修改Weblogic服务器的CSP响应头配置,在原有规则基础上新增
object-src blob: 'self',或者直接在default-src的规则列表中追加blob:,放开Blob源插件资源的加载权限 - 方案2:避免将PDF转为Blob地址加载,直接将后端提供的PDF接口地址作为
src赋值,只要接口属于当前应用同域地址,就符合'self'的CSP规则,无需额外调整CSP配置 - 方案3:若你必须使用Blob加载,可在Angular侧额外确认
pdfContent变量已经过DomSanitizer的bypassSecurityTrustResourceUrl方法处理,避免Angular自身的安全校验拦截资源地址
内容的提问来源于stack exchange,提问作者user1015388
相关产品推荐
相关产品推荐

