相关疑难解决方法(0)

Chrome 18+:如何使用内容安全政策允许内联脚本?

Chrome 18 Dev/Canary刚刚发布,并且content_security_policy在某些扩展的清单中将需要.

我正在尝试让CSP为内联脚本工作,但我不知道我做错了什么或者这是否是Chrome 18错误.

manifest.json的:

{
    "name": "CSP Test",
    "version": "1.0",
    "manifest_version": 2,
    "options_page": "test.html",
    "content_security_policy": "default-src 'unsafe-inline'"
}
Run Code Online (Sandbox Code Playgroud)

的test.html:

<html><head>
<script type="text/javascript">
        alert("hello");
</script>
</head></html>
Run Code Online (Sandbox Code Playgroud)

在Chrome 18中,此解压扩展无法加载,显示错误:

无法从'[扩展名目录]'加载扩展程序. 'content_security_policy'的值无效.

如果我更改'unsafe-inline''self',扩展加载正常,但alert()不起作用,并且选项页面的控制台包含错误:

由于Content-Security-Policy,拒绝执行内联脚本.

在Chrome 16中,使用'unsafe-inline'让扩展程序加载正常并且也能alert()正常工作.但是,在Chrome 16中,替换'unsafe-inline''foo'让扩展加载,但当然不会让alert()工作,所以也许Chrome 18比16更严格,但......

default-src 'unsafe-inline'居然无效,或者这是一个错误?我可以使用什么CSP值来alert()在Chrome 18中工作?


根据下面接受的答案,内联脚本不再适用于Chrome 18中的扩展程序.alert()需要将其放在自己的JavaScript文件中.

google-chrome google-chrome-extension content-security-policy

30
推荐指数
2
解决办法
7万
查看次数

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

我正在开发一个谷歌Chrome 打包应用程序,当我把沙盒放入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"]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

onclick我的锚标签上的事件有效,应用程序的流程已完成,除此之外,CSS样式表中的图标无法加载.

error从控制台得到了一个

File not found ,

但那些只是字体所以对我来说很好,

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

VIDEOJS:错误:(代码: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('nonce -...')来启用内联执行.另请注意,'script-src'未显式设置,因此'default-src'用作后备.

很抱歉很长的细节,

我只需要帮助,因为我已经在这里呆了3天了.

javascript jquery google-chrome sandbox google-chrome-app

15
推荐指数
1
解决办法
4万
查看次数

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

我正在学习使用Cordova和jquery mobile,我有以下错误:

拒绝执行内联脚本,因为它违反了以下内容安全策略指令:"default-src'self'data:gap:https://ssl.gstatic.com'unsafe-eval'".可以使用'unsafe-inline'关键字,散列('sha256-iacGaS9lJJpFDLww4DKQsrDPQ2lxppM2d2GGnzCeKkU =')或nonce('nonce -...')来启用内联执行.另请注意,'script-src'未显式设置,因此'default-src'用作后备.

我的代码如下:

    <!DOCTYPE html> 
<html>
    <head>
        <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 *; img-src 'self' data: content:;">
        <meta name="format-detection" content="telephone=no">
        <meta name="msapplication-tap-highlight" content="no">
        <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
        <link rel="stylesheet" type="text/css" href="css/index.css">
        <title>Hello World</title>
        <script> 
            $(document).ready(function()
            { 
                $("#tryit").click(function() {   
                    document.getElementById("msg").innerHTML = "hello";
                });

            }); 
        </script>
    </head>
    <body> 
        <button id="tryit">Try it</button>
        <div id="msg"></div>

        <script type="text/javascript" src="cordova.js"></script>
        <script type="text/javascript" src="js/index.js"></script>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

在课堂上,我写道:

cordova create hello2 com.example.hello2 hello2 …
Run Code Online (Sandbox Code Playgroud)

html javascript jquery node.js cordova

4
推荐指数
2
解决办法
1万
查看次数