0

Cylon projectに基づいてArduinoコードエディタとして機能するChromeアプリケーションを開発しています。 jsスクリプト(それはoutput.jsと呼ぶ)は、ledトグルロジックまたはarduinoで達成したい他のものを組み込み、browserifyを使用してそれを他のノード依存関係とともにコンパイルすることによって生成されます。彼らのchrome extension exampleでは、彼らはindex.htmlでこのスクリプトを静的に参照しています。ChromeアプリケーションのDOMにjavascriptを挿入する方法

私はユーザーがarduinoで作業するための任意のコードを書くことができるようになるので、私はoutput.jsの内容を動的に生成しています。私はoutput.jsの内容を正常に生成し、そのデータをscriptタグに挿入する関数を作成しました。

Refused to execute inline script because it violates the following Content Security Policy directive: 
"default-src 'self' blob: filesystem: chrome-extension-resource:". 
Either the 'unsafe-inline' keyword, a hash ('sha256-Mugizlz7AFKJ2hm6UA9ySY/31cKCVhLaEX9/QYpJIsk='), 
or a nonce ('nonce-...') is required to enable inline execution. 
Note also that 'script-src' was not explicitly set, so 'default-src' is used as a fallback. 

だから、私は潜在的なセキュリティ上の脆弱性かもしれインラインJavaScriptを実行する必要が実現:しかし、Google Chromeは、エラーがスローされます。 content scriptsは、カスタムJSまたはCSSをWebページに挿入するように特別に設計されていますが、WebサイトまたはWebアドレスのコンテキストで動作することがわかります。

DOMを変更してカスタムJSをスタンドアロンのChromeアプリケーションに挿入し、一部のウェブサイトやタブのコンテキストで動作するChrome拡張機能を挿入しません。私が主題に関して行ったほとんどの研究から、コンテンツスクリプトはクロムアプリケーションにとって有効な概念ではないと思います。どのように私はその後、クロムアプリのDOMにjavascriptを注入するのですか?このような状況で私が持っているコンテンツスクリプトには、どのような選択肢がありますか?

+0

Chromeアプリは、[サンドボックスページ](https://developer.chrome.com/apps/manifest/sandbox)を宣言することができます。 – wOxxOm

+0

devは、実行するJSファイルのURLを受け入れる関数を作成したところで、このgithubフォーラムのソリューション(https://github.com/angular/protractor/issues/2579)を試すことができます。コード参照の詳細については、この[コードサンプル](https://gist.github.com/danharper/8364399)を参照してください。 – noogui

答えて

0

エラーメッセージにハッシュを含むmanifest.jsonファイルを作成すると役立つことがあります。例えば

、あなたのmanifest.jsonは次のようになります。

{ 
    "manifest_version": 2, 
    "name": "arduino editor", 
    "version": "1.0.0", 
    "minimum_chrome_version": "46", 
    "content_security_policy": "script-src 'self' 'sha256-Mugizlz7AFKJ2hm6UA9ySY/31cKCVhLaEX9/QYpJIsk='", 
    "background": { 
    "page": "background.html" 
    } 
} 

は、より詳細な情報については、以下の記事を参照してください。

Chrome Extension - Content Security Policy - executing inline code

+0

クイック返信Jeffに感謝します。私は同様の 'manifest.json'を持っていますが、' output.js'の内容は動的に変更できるので、スクリプトが変更されるとすぐに無効になるため、Manifestの 'sha256'署名をハードコーディングできません。 –

+0

あなたのビルドシステムで 'sha256'を再計算できますか? –

+0

私がジェフができても、私は新しい署名でマニフェストを更新する必要があります。私はそれが実行時にクロームアプリのための実行可能なオプションだとは思わない。 –

関連する問題