web-dev-qa-db-ja.com

Chrome extensionコンテンツセキュリティポリシーディレクティブエラー

ラジオストリームを作成しようとしていますchrome拡張機能ですが、問題があります。通常のJS + HTML + CSSのようにブラウザでスクリプトを実行すると機能しますが、= Chrome extension私はこのエラーを受け取ります:

次のコンテンツセキュリティポリシーディレクティブ「script-src 'self' chrome-extension-resource:」に違反しているため、インラインスクリプトの実行を拒否しました。インライン実行を有効にするには、「unsafe-inline」キーワード、ハッシュ(「sha256 -...」)、またはノンス(「nonce -...」)のいずれかが必要です。

その後、これを自分のマニフェストに追加しました。

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

しかし、その後、エラーメッセージが表示されました(上記のコードのマニフェスト行のエラー)


これは私のマニフェストです:

{
   "background": {
      "scripts": [ "jquery.js", "jquery-ui.js", "plate.js" ]
        },

   "browser_action": {
      "default_icon": "Images/action-normal.png",
      "default_popup": "player.html",
      "default_title": ""
   },
   "description": "Chrome Player",
   "manifest_version": 2,
   "name": "Radio Chrome Player",
   "permissions": [ "http://www.radio-station.com/" ],
   "version": "1.0"

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

}

これはメインのhtmlファイルです。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="jquery.js"></script>
<script src="jquery-ui.js"></script>
<script src="main.js"></script>
<script>$(function(){$("#radioplayere").plate({playlist: [{file:"http://RADIO_STATION_STREAM_URL/;"}], phpGetter: "http://hostingshoutcast.com/stream/plate/php/plate.php"});});</script>
</head>
<body>
<div id="radioplayer">If you are seeing this then an error has occurred!</div>
</body>
</html>
20
user3397388

問題は次のとおりです。

  1. Chrome CSP インラインコードを禁止 。これはオーバーライドの対象ではありません。きみの 'unsafe-eval'は問題に対処しておらず、'unsafe-inline'それは助けになったでしょう 無視されます Chrome。

    インラインコードを削除する必要があります。

    <script>$(function(){$("#radioplayere").plate({playlist: [{file:"http://RADIO_STATION_STREAM_URL/;"}], phpGetter: "http://hostingshoutcast.com/stream/plate/php/plate.php"});});</script>
    

    これは、jsファイルで移動する必要があります。

  2. Manifest.jsonにタイプミスがあり、コンマを忘れました:

    "version": "1.0",
    

    一般に、 JSONバリデーター を使用すると、これらのエラーをキャッチできます。

19
Xan

私の理由は、[〜#〜] csp [〜#〜]問題があるjQueryの古いバージョン(v1.7など)を使用しているためです。新しいバージョン(v2.1.3)を選択します。

1
Sam Su

私はこれに少し遅れていることを知っていますが、Xanの答えに対するOPのコメントに基づいて、問題を解決する別のコンポーネントは、暗示されるAJAX呼び出しを調整することです.

私は同じエラーを受け取っていたので、API呼び出しを次のように調整しました。

dataType: 'json'

の代わりに:

dataType: 'jsonp'

(問題を解決し、許可されましたが、インラインスクリプトを削除する必要があります。)

1

Manifest.jsonファイルにCSPを追加すると、エラーが削除されます。それは私の反応アプリのために働いた。 「」が欠落していることがコードの問題であると思われます。それ以外の場合は、以下の行を追加してから試してください。

"csp": "script-src 'self' 'unsafe-inline'; object-src 'self'"

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

0
abhijit padhy