【问题标题】:CSP, Refused to load the script, violates the following Content Security Policy directive: "script-src 'self'"CSP,拒绝加载脚本,违反了以下内容安全策略指令:“script-src 'self'”
【发布时间】:2021-08-25 04:57:17
【问题描述】:

谁能解释我如何将 CSP 元标记添加到我的标题中? 我尝试向我的标题添加不同的元标记,但我从 CSP 得到更多错误

<meta http-equiv="Content-Security-Policy" content="default-src 'self' https:*//api.mapbox.com/mapbox-gl-js/v2.3.1/mapbox-gl.js;">

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data:gap 'unsafe-eval' ws: ; style-src 'self' 'unsafe-inline' script-src *; media-src *; font-src *;  connect-src *; img-src 'self' data: content:;">

console error stack

【问题讨论】:

    标签: javascript node.js meta-tags mapbox-gl-js content-security-policy


    【解决方案1】:

    看起来您已经通过 HTTP 标头发布了 CSP,因为控制台错误提示:

    它违反了以下内容安全策略指令“default-src 'self'

    当您的元标记包含其他 default-src 来源时:default-src 'self' https:*//api.mapbox.com/mapbox-gl-js/v2.3.1/mapbox-gl.js

    您可以检查您拥有的 CSP 响应 HTTP 标头,教程是 here

    在这种情况下,通过添加元标记,您将拥有 2 个相互独立工作的 CSP,因此 HTTP 标头中的 CSP 将继续阻止您的脚本。

    Node.js 在依赖项中有一个 Helmet 中间件,Helmet 4 通过 HTTP 标头自动发布一个默认 CSP。检查一下。
    在这种情况下,您有 2 个选择:

    • 禁用 Helmet 的 CSP:app.use( helmet({ contentSecurityPolicy: false, }) ); 并使用元标记。
    • 通过 Helmet 配置 CSP 标头(首选方式)。

    顺便说一句,您在以下方面有错误:

    default-src 'self' data:gap 'unsafe-eval' ws: ; style-src 'self' 'unsafe-inline' script-src *; media-src *; font-src *;  connect-src *; img-src 'self' data: content:;
    
    1. data:gap 是错误来源,请根据需要使用 data:data: gap:
    2. script-src 之前错过了;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-17
      • 1970-01-01
      • 2013-07-13
      • 1970-01-01
      • 2016-04-23
      • 2015-09-21
      • 1970-01-01
      相关资源
      最近更新 更多