Chrome 拡張アプリケーションで JavaScript を使用して「iframe」にさまざまなコンテンツ (pdf、swf など) を読み込もうとしています。コンテンツは、データ URL スキームを次のように使用してロードされます。
// この JavaScript は html ファイルに登録され、LoadFunction はボタンのクリックで DOMContentLoaded イベント内に登録されます。
void LoadFunction()
{
window.parent.document.getElementById("page_data").src = 'data:application/pdf;base64,' + 'base64 encoded data'; (base64 data is received from a c++ class)
}
ただし、上記の関数が呼び出されるとすぐに、コンテンツ セキュリティ ポリシー エラーが次のように発生します。
'data:application/pdf;base64,JVBERi0xLjQNCiXi48/TDQoxIDAgb2JqDQo8PA0KL1R5cGU…mRvYmoNCjkgMCBvYmoNCjw8DQovVHlwZSAvRm9udA0KL1N1YnR5cGUgL1R5cGUxDQovQmFz PolicyZUZ' からのプラグイン データの読み込みを拒否しました。
しかし驚くべきことに、データの URL が 'data:image/png;base64,' + 'base64 encoded data'; に変更された場合、このエラーは発生しません。画像が iframe に正常に読み込まれます。
私の知る限り、このエラーはインライン コードが html ファイルに直接実行された場合にのみ発生しますが、ここではそうではありません。
また、manifest.json ファイルでコンテンツ セキュリティ ポリシーを「content_security_policy」:「script-src 'self'; object-src 'self' ; frame-src 'self' data:」に設定しようとすると、
その後、エラーは次のように変わり ます: 'data:application/pdf;base64' からのプラグイン データの読み込みを拒否しました。これは、次のコンテンツ セキュリティ ポリシー ディレクティブに違反しているためです:
おそらく object-src を設定する必要がありますが、どうすればよいかわかりません。