Content-Security-Policy:拒绝执行内联脚本

时间:2018-03-11 19:21:44

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

我正在尝试实施内容安全政策。

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

  

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

所以我的问题是:

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

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

      

    未定义的属性名称(nonce)

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

  4. 由于

1 个答案:

答案 0 :(得分:0)

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

      

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

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