拒绝加载脚本,因为它违反了以下内容安全策略指令完全权限字符串

当我尝试将我的应用程序部署到Android系统高于5.0.0(棒棒糖)的设备上时,我不断收到以下错误消息:

07-03 18:39:21.621: D/SystemWebChromeClient(9132): file:///android_asset/www/index.html: 第 0 行 : 拒绝加载脚本 'http://xxxxx',因为它违反了以下内容安全策略指令:“script-src 'self' 'unsafe-eval' 'unsafe-inline'”。07-03 18:39:21.621: I/chromium(9132): [INFO:CONSOLE(0)] “拒绝加载脚本 'http://xxx',因为它违反了以下内容安全策略指令:”script-src 'self' 'unsafe-eval' 'unsafe-inline'”。

但是,如果我将其部署到具有Android系统4.4.x(KitKat)的移动设备,则安全策略适用于默认策略:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">

然后我想,也许,我应该改成这样:

<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-eval' 'unsafe-inline'; object-src 'self'; style-src 'self' 'unsafe-inline'; media-src *">

基本上,这两个选项都不适合我。我该如何解决这个问题?


答案 1

MagngooSasa给出的自我答案确实做到了,但对于其他任何试图理解答案的人来说,这里有一些更详细的信息:

在使用Visual Studio开发Cordova应用程序时,我试图导入一个远程JavaScript文件[位于此处 http://Guess.What.com/MyScript.js],但我在标题中提到了错误。

下面是项目索引.html文件中的 meta 标记:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">

以下是更正后的元标记,以允许导入远程脚本:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *;**script-src 'self' http://onlineerp.solution.quebec 'unsafe-inline' 'unsafe-eval';** ">

不再有错误!


答案 2

完全权限字符串

之前的答案没有解决我的问题,因为它们没有同时包含关键字;所以这里有一个字符串:blob: data: gap:

<meta http-equiv="Content-Security-Policy" content="default-src * self blob: data: gap:; style-src * self 'unsafe-inline' blob: data: gap:; script-src * 'self' 'unsafe-eval' 'unsafe-inline' blob: data: gap:; object-src * 'self' blob: data: gap:; img-src * self 'unsafe-inline' blob: data: gap:; connect-src self * 'unsafe-inline' blob: data: gap:; frame-src * self blob: data: gap:;">

警告:这会使文档面临许多攻击。请务必防止用户在控制台中执行代码,或在封闭环境中执行代码,如 Cordova 应用程序。