【问题标题】:Content-Security-Policy: Refused to execute inline scriptContent-Security-Policy:拒绝执行内联脚本
【发布时间】:2018-03-14 03:24:03
【问题描述】:

我正在尝试实施 Content-Security-Policy。

我的 HTML 文件不包含任何 JavaScript 代码,除了包含外部 js 文件。但控制台仍然说:

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

所以我的问题是:

  1. 包含一个外部 JavaScript 文件,例如 <script src="https://code.jquery.com/jquery-1.12.4.js"></script> 被视为“内联脚本”?

  2. 如果是这样,我该怎么做才能通过 CSP 允许这些脚本?我已经尝试在我的脚本中使用nonce,但它总是说:

    未定义的属性名称(随机数)

  3. 开发工具(例如 Google Chrome)是否提供了查看哪个内联脚本产生错误的功能?

谢谢

【问题讨论】:

  • 1.所有脚本文件都应该在扩展包 2 中。内联代码也意味着 onclick 属性和任何其他类似的属性。

标签: javascript java spring google-chrome-devtools content-security-policy


【解决方案1】:
  1. 在这种情况下,包含外部 JS 文件不被视为“内联脚本”。在script-src 属性中指定外部源就足够了,例如script-src 'self' https://code.jquery.com/jquery-1.12.4.js
  2. 因为外部文件不被视为内联脚本,所以我不需要使用 nonce 或 hash。但是提供了信息here
  3. 在谷歌浏览器的开发工具中,我没有找到任何信息在哪一行或哪个外部 JS 文件中导致错误。相反,我使用了 Firebug。至少提到了导致错误的行。借助此帮助,您可以轻松消除被忽略的 DOM 元素。

但真正帮助我的是here

始终定义 default-src 非常重要。否则,指令将默认允许所有资源

在我的情况下,将 default-src 'self' 添加到 CSP 可以消除错误!

【讨论】:

    猜你喜欢
    • 2019-09-20
    • 1970-01-01
    • 2017-05-25
    • 2020-02-12
    • 2014-07-14
    • 2014-09-03
    • 2018-12-03
    • 2019-08-29
    • 1970-01-01
    相关资源
    最近更新 更多