2

Chrome 拡張機能を読み込もうとすると、次のエラーが表示されます。

Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self' https://ajax.googleapis.com".

これが私のmanifest.jsonの一部です:

...

 "background": {
 "scripts": ["launcher.js"]
     },
"options_page": "options.html",
"content_security_policy": "script-src 'self' https://ajax.googleapis.com; object-src 'self'",
"permissions": [
"tabs", "notifications", "http://*/*", "https://*/*"

...

私のjavascript全体で、私はhttps://ajax.googleapis.comとのみ通信しており、 Inspect viewsのNetworkタブで確認しました。

そして、すべての JavaScript コードが.jsファイル内にのみ存在することを確認しました。(はい、必要に応じてaddEventListener()を使用しています。

助言がありますか?

更新:エラーの原因となるコードを表示しています(ロブからの質問)これは、私が任意のサーバーと通信している唯一の場所です:

....
$.ajax({
        type: "get",
        url: "https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=" + storyCount + "&callback=?",
        data: {
                q: link,
                output: "json_xml"
             },
        async: false,
        dataType: "json",
        success: function (data) {
             if (data.responseStatus == 200) {
                //process JSON
              }
....
4

2 に答える 2

2

マニフェスト バージョン 1 から 2 への変更に伴い。Chrome 拡張機能では、インライン JavaScript を使用できません。すべての JavaScript を .JS ファイル内に配置し、それを html ページ内に含める必要があります。

また、すべての onclick、onchange、onsubmit to eventlistner イベントを削除します。

ありがとう

于 2012-11-29T07:28:45.933 に答える
0

このエラー メッセージは、他のサーバーへのリクエストとは関係ありません。インライン スクリプトに関するものです。インライン スクリプトがない場合は、どこかで などを使用して動的にコードを作成しているために発生する可能性がありeval()ますnew Function()。たとえば、jQuery は、メソッドが見つからない場合、JSON を解析するためにそれを行いますJSON.parse()(ただし、Chrome では、このメソッドは通常利用できるはずです)。ここで提供した情報から、どのコードがエラーの原因であるかを判断することは不可能です。

それにもかかわらず、 Rob Wがコメントで正しく指摘したように、JSONP を絶対に使用しないでください。JSONP は、本質的に安全でない拡張機能のコンテキストでリモート サーバーからコードを実行します。理論的にはコールバックを呼び出すだけですが、実際には悪意のあることも実行できます。代わりに JSON を使用し (データをダウンロードして解析し、リモートでコードを実行しない) ajax.googleapis.com、コンテンツ セキュリティ ポリシーから削除する必要があります。

于 2012-08-20T08:41:39.097 に答える