拒绝执行内联事件处理程序,因为它违反了 CSP。 (沙盒)

Posted

技术标签:

【中文标题】拒绝执行内联事件处理程序,因为它违反了 CSP。 (沙盒)【英文标题】:Refused to execute inline event handler because it violates CSP. (SANDBOX) 【发布时间】:2016-07-19 08:55:06 【问题描述】:

我正在开发一个谷歌浏览器打包应用程序,当我把沙盒放在manifest.json

 
  "manifest_version": 2,
  "name": "WM32216",
  "version": "2.1",
  "minimum_chrome_version": "23",
  "permissions":["webview", "https://ajax.googleapis.com/*"],
  "sandbox":
      "pages":["index.html"]
  ,
  "app": 
    "background": 
      "scripts": ["main.js"]
    
  

我的锚标记上的 onclick 事件有效,并且应用程序的流程已完成,除了无法加载 CSS 样式表中的图标。

我从控制台收到了error

File not found,

但这些只是字体,所以我觉得很好,

最大的问题是,iframe 中的视频无法播放,而且我在字体之前遇到了额外的错误:

VIDEOJS: 错误: (CODE:4 MEDIA_ERR_SRC_NOT_SUPPORTED) 无法加载媒体,原因可能是服务器或网络出现故障或格式不受支持。

不允许加载本地资源:blob:null/b818b32c-b762-4bd9-...

当我删除 manifest.json 文件中的沙箱时,一切都很好,控制台中没有关于字体的错误,

但是,当我 点击/单击我的锚标记,它有一个单击事件以在 js 中加载新功能时,我收到以下 控制台错误

拒绝执行内联事件处理程序,因为它违反了以下内容安全策略指令:“default-src 'self' blob: filesystem: chrome-extension-resource:”。启用内联执行需要“unsafe-inline”关键字、哈希(“sha256-...”)或随机数(“nonce-...”)。另请注意,'script-src' 未显式设置,因此 'default-src' 用作后备。

抱歉,很长的细节,

我只是需要帮助,因为我已经被困在这里 3 天了。

【问题讨论】:

【参考方案1】:

回答您的非沙盒相关问题:

你的代码中有这样的东西:

<button onclick="myFunction()">Click me</button>

简而言之,这在 chrome 应用和扩展程序中是不允许的。

将其更改为以下内容即可:

html:

<button id="myButton">Click me</button>
<script src="script.js"></script>

script.js:

document.getElementById("myButton").addEventListener("click", myFunction);

function myFunction()
  console.log('asd');

长篇大论:

在 chrome 应用中,内容安全策略不允许内联 javascript。所以你必须把你的 javascript 放在一个 .js 文件中,并将它包含在你的 HTML 中。

延伸阅读:https://developer.chrome.com/extensions/contentSecurityPolicy

【讨论】:

是的,我忘记了不允许使用内联 javascript,但是如何获取被点击的锚标记的 ID?而 ID 是动态的.. 为什么id是动态的?你可以使用 class 或 data-something html 属性吗?使用 javascript 你可以参考很多事情是 DOM 喜欢找到所有 标签并给他们 onclick 事件 你可以像这样使用 somtting 吗? google 它是动态的,因为一切都来自 POST

以上是关于拒绝执行内联事件处理程序,因为它违反了 CSP。 (沙盒)的主要内容,如果未能解决你的问题,请参考以下文章

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

拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script-src 'self'”

拒绝应用内联样式,因为它违反了以下内容安全策略指令

Cordova Angular webView 错误拒绝应用内联样式,因为它违反了以下内容安全策略指令

Chrome 中的 Css 内联样式错误:“拒绝应用内联样式,因为它违反了以下内容安全策略指令……”

chrome扩展拒绝执行内联脚本