拒绝执行内联事件处理程序,因为它违反了 CSP。 (沙盒)
Refused to execute inline event handler because it violates CSP. (SANDBOX)
我正在开发 google chrome 打包 应用程序,当我将 Sandbox 放入 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: ERROR: (CODE:4 MEDIA_ERR_SRC_NOT_SUPPORTED) The media could not be loaded, either because the server or network failed or because the format is not supported.
Not allowed to load local resource: blob:null/b818b32c-b762-4bd9-...
当我删除 manifest.json 文件中的沙箱时,一切都很好,控制台中没有关于字体的错误,
但是当我 hit/click 我的锚标记 有一个点击事件来在 js 中加载一个新函数时,我得到以下 控制台错误:
Refused to execute inline event handler because it violates the following Content Security Policy directive: "default-src 'self' blob: filesystem: chrome-extension-resource:". Either the 'unsafe-inline' keyword, a hash ('sha256-...'), or a nonce ('nonce-...') is required to enable inline execution. Note also that 'script-src' was not explicitly set, so 'default-src' is used as a fallback.
抱歉,很长的细节,
我只是需要帮助,因为我已经被困在这里 3 天了。
您的非沙盒相关问题的答案:
您的代码中有这样的内容:
<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
我正在开发 google chrome 打包 应用程序,当我将 Sandbox 放入 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: ERROR: (CODE:4 MEDIA_ERR_SRC_NOT_SUPPORTED) The media could not be loaded, either because the server or network failed or because the format is not supported.
Not allowed to load local resource: blob:null/b818b32c-b762-4bd9-...
当我删除 manifest.json 文件中的沙箱时,一切都很好,控制台中没有关于字体的错误,
但是当我 hit/click 我的锚标记 有一个点击事件来在 js 中加载一个新函数时,我得到以下 控制台错误:
Refused to execute inline event handler because it violates the following Content Security Policy directive: "default-src 'self' blob: filesystem: chrome-extension-resource:". Either the 'unsafe-inline' keyword, a hash ('sha256-...'), or a nonce ('nonce-...') is required to enable inline execution. Note also that 'script-src' was not explicitly set, so 'default-src' is used as a fallback.
抱歉,很长的细节,
我只是需要帮助,因为我已经被困在这里 3 天了。
您的非沙盒相关问题的答案:
您的代码中有这样的内容:
<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