拒绝加载图像“blob:...”,因为它违反了以下内容安全政策

Posted

技术标签:

【中文标题】拒绝加载图像“blob:...”,因为它违反了以下内容安全政策【英文标题】:Refused to load the image 'blob:...' because it violates the following Content Security Policy 【发布时间】:2020-04-16 10:45:09 【问题描述】:

我收到了这个错误:

Refused to load the image 'blob:file:///cf368042-bf23-42b6-b07c-54189d3b0e01' because it violates the following Content Security Policy directive: "default-src * 'self' 'unsafe-inline' 'unsafe-eval' data: gap: content:". Note that 'img-src' was not explicitly set, so 'default-src' is used as a fallback.

在尝试加载 mapboxGL 地图时。 这是我的 CSP 标签:

<meta http-equiv="Content-Security-Policy" 
    content="
      worker-src blob:; 
      child-src blob: gap:;
      default-src * 'self' 'unsafe-inline' 'unsafe-eval' data: gap: content:">

【问题讨论】:

将 'img-src blob:' 添加到 Content-Security-Policy 值。或者将 'blob:' 添加到现有的 'default-src' 值。 【参考方案1】:

您需要在您的 CSP 值中添加 img-src blob:。 由于 img-src 不存在,它使用的是 default-src。 您也可以设置 img-src *。 请查看https://content-security-policy.com/ 了解如何为图像添加 CSP。

【讨论】:

【参考方案2】:

这是对图像和 base64 的修复。

需要加img-src 'self' blob: data:;如下:

<meta http-equiv="Content-Security-Policy" 
    content="
      worker-src blob:; 
      child-src blob: gap:;
      img-src 'self' blob: data:;
      default-src * 'self' 'unsafe-inline' 'unsafe-eval' data: gap: content:">

【讨论】:

这里data:有什么用? img-src 'self' blob: 可以代替吗?【参考方案3】:

通常,设置 img-src 策略会解决问题,但如果您仍然遇到相同的错误。 注意,如果你同时使用“helmet”中间件,你的问题可能来自它,需要单独配置。

【讨论】:

以上是关于拒绝加载图像“blob:...”,因为它违反了以下内容安全政策的主要内容,如果未能解决你的问题,请参考以下文章

拒绝加载脚本,因为它违反了以下内容安全策略指令

Chrome 扩展“拒绝加载脚本,因为它违反了以下内容安全策略指令”

拒绝加载字体 '<URL>' 因为它违反了以下内容安全策略指令 default-src ,所以使用 default-src 作为后备

拒绝加载样式表,因为它违反了内容安全策略

拒绝应用内联样式,因为它违反了以下内容安全策略指令

JQuery 3.5.1 并拒绝执行内联脚本,因为它违反了以下内容安全策略指令: