39

私の Chrome アプリには次のマニフェストがあります。

{
    "name": ",
    "version": "1.0.3",
    "manifest_version": 2,
    "description": "Chrome Extension for.",
    "icons": {
        "16": "images/test.png",
        "19": "images/test.png",
        "256": "images/test.png"
    },
    "app": {
        "background": {
            "scripts": [
                "background.js"
            ]
        }
    },

    "sandbox": {
        "js": [
            "lib/test-api.js"
        ]
    },
    "permissions": [
        "<all_urls>",
        "notifications",
        "storage",
        "videoCapture"
    ]
}

を実行するスクリプト ファイルがありますevalCSPとサンドボックスについて読みましたが、それでも次のエラーが発生します。

「unsafe-eval」は次のコンテンツ セキュリティ ポリシー ディレクティブで許可されているスクリプトのソースではないため、文字列を JavaScript として評価することを拒否しました: "default-src 'self' chrome-extension-resource:". 「script-src」は明示的に設定されていないため、「default-src」がフォールバックとして使用されることに注意してください。

4

2 に答える 2

46

CSPリンクに従ってマニフェストに CSP 行を追加しようとしましたか?

"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
于 2014-01-15T07:03:50.387 に答える
36

あなたが示しているのはChrome 拡張機能ではなく、ChromeアプリですChrome 拡張機能を使用すると、デフォルトのコンテンツ セキュリティ ポリシーを緩和できます。Chrome アプリはそうではありません。(ソース: Chrome アプリの CSP ドキュメント; 注: このページは、Chrome 拡張機能の CSP ドキュメントとは異なります)。

次の行は、アプリと拡張機能に適用されます。

  • コンテンツ セキュリティ ポリシーは、特定のスクリプトではなく、ページ全体に適用されます。そのため、ページ全体に対してのみサンドボックスを宣言できます (sandbox.pagesマニフェスト ファイルのキーを使用)。サンドボックスで「js」をキーとして使用することはできません。

Chrome 拡張機能では、CSP を緩和できます。たとえばeval、次のポリシーの使用を許可します。

"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"

拡張機能でアプリを有効にするには: キーを使用しないで、appsキーを使用しbackgroundます。eval次のマニフェストを使用すると、バックグラウンド ページで使用できるようになります。

{
    "name": "Whatever",
    "version": "1.0.3",
    "manifest_version": 2,
    "background": {
        "scripts": [
            "background.js"
        ]
    },
    "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
}

(省略icons/permissions例に関連しないため。sandbox必要がないため省略)

于 2014-01-15T09:10:32.970 に答える