当前位置: 首页 > 知识库问答 >
问题:

跨脚本编写时违反内容安全策略错误

史鸿运
2023-03-14

在这里输入图像描述所以我是非常新的帕格,但它声称就像超文本标记语言,所以我使用它,当做以下事情:

block head:在base.pug中,并在另一个页面中使用它,如:block append head:(并使用以下脚本和链接):block append head script(src=)https://api.mapbox.com/mapbox-gl-js/v0.54.0/mapbox-gl.js“)链接(href=”https://api.mapbox.com/mapbox-gl-js/v0.54.0/mapbox-gl.css“rel='stylesheet')

我得到的错误是它违反了内容安全策略

共有2个答案

戎鹏云
2023-03-14

我终于能够通过helmet.contentSecurityPolicy和设置内部链接来获得它。

如这里所示

app.use(
helmet.contentSecurityPolicy({
    directives: {
        defaultSrc: [],
        connectSrc: [],
        scriptSrc: [],
        styleSrc: [],
        workerSrc: [],
        objectSrc: [],
        imgSrc: [],
        fontSrc: [],
    },
})
);
尉迟华翰
2023-03-14

Pug只是一个HTML预处理器,它在输出端生成HTML标记。因此:

head
  script(src='https://api.mapbox.com/mapbox-gl-js/v0.54.0/mapbox-gl.js')
  link(href='https://api.mapbox.com/mapbox-gl-js/v0.54.0/mapbox-gl.css' rel='stylesheet')

在服务器端,它将创建标记:

<head>
   <script src='https://api.mapbox.com/mapbox-gl-js/v0.54.0/mapbox-gl.js' type='text/javascript'></script>
   <link href='https://api.mapbox.com/mapbox-gl-js/v0.54.0/mapbox-gl.css' rel='stylesheet'>
</head>

并将其发送到浏览器。

内容安全策略(CSP)是在浏览器中工作的安全层,允许从其中加载页面的脚本/样式/字体/图像/iframe/媒体/等。CSP可以作为HTTP响应头或元标记传递到页面。

因此,Pug与CSP没有直接关系,但在CSP中应该允许由Pug插入的脚本和样式。
您可以检查服务器发送到浏览器的CSP,请参阅教程,很可能是服务器将其作为HTTP头发送。

因此,您需要检查服务器中间件,看谁在发送CSP。对于Node.js,它应该是Helmet-从v4开始,它默认发送CSP头。您必须将其配置为允许从https://api.mapbox.com/https://cdnjs.cloudflare.com和从https://api.mapbox.com(将此资源添加到相应的CSP指令中)。
或者,您可以暂时禁用CSP:

app.use(
  helmet({
    contentSecurityPolicy: false,
  })
);

并在以后配置它,如果需要的话,因为所有使用的源只有在开发完成后才会知道。

注意:如果使用其他类型的服务器和软件,则有必要查看相关文档,了解CSP在其中的发布位置和发布方式。

 类似资料:
  • 我正在从chargebee.com加载外部脚本,并在控制台中收到此错误消息: [仅报告]拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script src'nonce VVZ V0c=''self'https://maps.googleapis.com https://domain.chargebeestatic.com http://dgkxwewtzsnml.cloudfront.ne

  • 当我将图像上传到我的web应用程序中时,它显示以下错误 拒绝加载图像'

  • 我正在尝试开发一个渐进式Web应用程序,它包括一个外部JavaScript、一个外部CSS、JQuery库以及清单和服务工作者。 我设置了内容安全策略来加载这些内容,并在localhost和Google Chrome上运行它。 这是我的超文本标记语言头: 我希望一切都能正常运行,但相反,我得到的错误与我的声明不符: 拒绝加载脚本的https://ajax.googleapis.com/ajax/l

  • 我试图在测试站点上使用新的内容安全策略(CSP)HTTP头。当我将CSP与Modernizer结合使用时,会出现CSP冲突错误。这是我正在使用的CSP策略: 内容安全策略:默认src“self”;脚本src'self'ajax.googleapis.com ajax.aspnetcdn.com;样式src‘self’;img src“自我”;字体src“self”;报表uri/WebResourc

  • 我正在学习将Cordova与jquery mobile结合使用,我有以下错误: 拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“默认src“self”数据:间隙:https://ssl.gstatic.com “不安全评估”。启用内联执行需要'unsafe inline'关键字、哈希('sha256-iacGaS9lJJpFDLww4DKQsrDPQ2lxppM2d2GGnzCeKkU=')

  • 问题内容: 当我尝试将我的应用程序部署到5.0.0以上的android系统的设备上时,我一直收到以下错误消息: 07-03 18:39:21.621:D / SystemWebChromeClient(9132):file:///android_asset/www/index.html:第0行:拒绝加载脚本“ http:// xxxxx ”,因为它违反了以下内容安全策略指令:“ script-sr