4

コードを動的にロードする拡張機能が必要です。私はそれをロードするためにこれを書きました -

    var se = document.createElement('script');
se.setAttribute('type', 'text/javascript');
se.appendChild(document.createTextNode(code));
document.getElementsByTagName('head').item(0).appendChild(se);

そして、これはmanifest.jsの私のセキュリティポリシーです -

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

これにより、JavaScriptエラーがスローされます-

 "Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe eval'"

私の質問は - なぜリラックスしていないのですか?unsafe evals を許可するために、具体的にマニフェストに行を追加しました。

4

2 に答える 2

2

evalあなたの使い方がエラーを引き起こしているとは思いません。ドキュメントの に <script>ブロックを挿入することにより、インライン JavaScript の実行に対するポリシーに違反しているようです。head

Content Security Policy に関するドキュメントによると:

インライン JavaScript は実行されません。この制限により、インライン ブロックとインライン イベント ハンドラの両方が禁止されます (例: < button onclick='...'>)。

また、次の点に注意してください。

インライン スクリプト

インライン JavaScript の実行に対する制限を緩和するメカニズムはありません。特に、「unsafe-inline」を含むスクリプト ポリシーを設定しても効果はありません。

jsコードをインラインに配置する代わりに、外部ファイルを利用して目的を達成する方法を考え出す必要があります。

于 2013-02-16T21:16:39.463 に答える
1

これをmanifest.jsonに追加するだけでうまくいきました。

 "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
于 2015-03-04T23:22:22.933 に答える