30

これは相対的なChrome拡張機能です。GoogleChartAPIを使用した簡単なものを試しています

このコードは、アイコンをクリックすると読み込まれるHTMLドキュメント「popup.html」に含まれています。

<!doctype html>
<html>
<head>
  <script type="text/javascript" src="js/libs/jquery-1.8.0.min.js"></script>
  <script type="text/javascript" src="js/popup.js"></script>
  <script type="text/javascript" src="http://www.google.com/jsapi?key=xxxxxxxxxxx"></script>

  [...]
</body>
</html>

次のメッセージが表示されます。

次のコンテンツセキュリティポリシーディレクティブ「script-src'self'chrome-extension-resource:」に違反しているため、スクリプト'http://www.google.com/jsapi?key=xxxxxxxxxxx'の読み込みを拒否しました。

マニフェストファイルを変更しようとしましたが、成功しませんでした。

{
  [...]
  "manifest_version": 2,
  "permissions": ["http://*.google.com/"],
  "content_security_policy": "script-src 'self' http://www.google.com; object-src 'self'",
}

何か案が?

4

3 に答える 3

29

私は過去12時間この問題に取り組み、ついにそれを機能させました。なぜそんなに時間がかかったのですか?何度もトレイルから投げ出されたからです。まず、誤ったリード:

  1. 「HTTPSにする」-関係ありません。Chrome拡張機能は、別のドメインに対して通常のHTTP呼び出しを行い、正常に機能するようになりました。(更新:もう少し明確にします。「makeit https」の神話は、SCRIPTの読み込みに関して人々が抱える傾向のある同様の問題に根ざしています。外部の.jsファイルを取り込む必要がある場合は、そうする必要があります。 content_security_policyを変更し、httpsのみを受け入れるように見える適切なホスト名を含めます。これはRESTサービスなどの外部ホスト名をヒットすることとは異なることに注意してください。前述したように、content_security_policyやhttpsを変更する必要はありません。 )。

  2. 「JQueryAJAX呼び出しでJSONPを使用する」-これは通常のWebページでクロスドメインAJAXに対処する方法かもしれませんが、組み込みのコンテンツセキュリティポリシーのため、Chrome拡張機能では必要ありません。さらに、JSONPの実装は、コールバックパラメーターを処理するためにサーバー側の変更が必要なため(または何か、まだわかりません)、PITAのように聞こえます。いずれにせよ、必要ありません。

  3. 「拡張機能のコンテンツセキュリティポリシー(CSP)文字列を混乱させる」-マニフェストバージョン2では、デフォルトの文字列は正常に機能します:「script-src'self';object-src'self'」。明示的に指定する必要はありません。必要なのは、拡張機能からヒットしようとしているドメインを「許可」値として含めることです。

ソリューション:

拡張機能からすべてのインラインJavaScriptを削除します。別の.jsファイルに入れてください。かなりの量のjavascriptを含むほとんどのhtmlファイルの場合、このプロセスはうまくいかないのではないかと思います。幸いなことに、私が持っていたのはbody onloadだけで、代わりにwindow.addlisteneronloadイベントとして別のjsファイルに移動できました。

この問題を乗り越えるために本当に読む必要があるページはここにあります:https ://developer.chrome.com/apps/contentSecurityPolicy

于 2012-09-27T15:14:30.990 に答える
22

https代わりにプロトコルを使用するようにしてください。発生しているエラーは、コンテンツセキュリティポリシーに関するものです。

ページのRelaxing the default policyセクションを参照してください。HTTPSホワイトリストに登録できるのは、、、chrome-extensionおよびのみであると記載されていますchrome-extension-resource

于 2012-08-26T10:00:34.550 に答える