javascript - 内容安全策略:拒绝执行内联脚本

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

我正在尝试实现内容安全策略。

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

Refused to execute inline script because it violates the following Content Security Policy directive:

所以我的问题是:

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

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

    Undefined attribute name (nonce)

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

谢谢

最佳答案

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

但真正对我有帮助的是 here

It’s very important to always define default-src. Otherwise, the directives will default to allowing all resources

就我而言,将 default-src 'self' 添加到 CSP 可以消除错误!

关于javascript - 内容安全策略:拒绝执行内联脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49224091/

相关文章:

javascript - Openlayers 3 获取谷歌地图基础层?

java - Spring 验证错误的文档

java - 从服务器在客户端执行的 spring 双向 rmi 回调

java - mybatis spring ref 光标映射

javascript - NAV Javascript AddIn 方法无法正常工作 : Method 'Page90005. PageName58a58aUpdateSignature 未找到

javascript - 如何使用 jQuery 防止 ajax 请求跟随重定向

javascript - 如何让它像jquery一样?

java - 启动和停止无限 while 循环

java - JPA - Eager - Lazy 最佳实践

java - 显示文本字段中的文本,但在组合框中选择时不会更改字体