javascript - Chrome 扩展的javascript内容安全策略问题

  显示原文与译文双语对照的内容

尝试在 Chrome 扩展应用程序中通过javascript在'iframe'中加载不同内容的( 。可以是 pdf,swf 等等 ) 。 内容是使用以下数据URL方案加载的:

//这个javascript是在html文件中注册的,而LoadFunction在单击按钮的时候注册了 inside 事件。


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...mRvYmoNCjkgMCBvYmoNCjw8DQovVHlwZSAvRm9udA0KL1N1YnR5cGUgL1R5cGUxDQovQmFzZUZ'加载插件数据: "'自我'

但是,当数据url更改为以下情况时,不会引发这里错误: ""数据:图像/png ;base64,'+'base64编码数据;成功加载图像。

我知道,只有在 inline 代码直接执行到html文件时,这个错误才会发生。

如果我尝试在 manifest.json 文件中设置内容安全策略,请执行以下操作: "content_security_policy":"脚本 src'自我';对象源'自我';框架 src'自我'数据:"

然后,错误发生在: 由于违反了以下内容安全策略指令,拒绝从'数据:应用程序/pdf ;base64,'加载插件数据: "对象源'自我'

所以可能需要设置对象 src,但不确定它应该是什么。

时间: 原作者:

符合扩展内容安全策略插件的Chrome 文档,

请注意,脚本src和对象src都由策略定义。 Chrome 不接受不将这些值限制为( 至少)'self的策略。

不可能让你的extemsion CSP轻松接受 PDF 。
英镑。

你可以定义沙箱扩展资源,在扩展中不受扩展CSP的影响的页面中,换句话说,。 同时,页面将丢失对 Chrome 扩展API的访问,以防止页面上的安全漏洞。 如果希望在扩展和沙箱页面之间进行通信,请使用 postMessage - 比如,使用 Chrome 扩展中的eval显示 安全。

原作者:
...