web-dev-qa-db-ja.com

Chrome Appのコンテンツセキュリティポリシー

My 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"
    ]
}

evalを実行するスクリプトファイルがあります。 [〜#〜] csp [〜#〜] とサンドボックスについて読みましたが、まだこのエラーが発生します。

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

32
user1968030

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

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

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

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

  • コンテンツセキュリティポリシーは特定のスクリプトではなく、ページ全体に適用されます。そのため、ページ全体に対してのみサンドボックスを宣言できます( sandbox.pagesマニフェストファイルのキー )。あなたはcannot「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を省略しました)

35
Rob W