首页 > 解决方案 > Electron:仅在特定 iframe 中允许内联样式

问题描述

是否可以仅在 Electron 的特定 iframe 中允许内联样式?

我的问题: 我正在尝试在 Electron 应用程序中加载 Whatfix 脚本。Whatfix 脚本会加载所有内容,iframe并且它使用内联样式,由于 Electron CSP,它会在没有任何样式的情况下呈现小部件。我不想unsafe-inline在整个应用程序上使用 CSP,我只需要它iframe来自 Whatfix。

我得到的错误:Refused to apply inline style because it violates the following Content Security Policy directive: "default-src 'self'"

我的 CSP 指令:default-src 'self';

标签: javascriptiframeelectroncontent-security-policy

解决方案


具有类似网络方案的 iframe<iframe src='http:/https: ...'>创建一个隔离的浏览上下文。
这意味着父文档 CSP 不在 iframe 内部起作用,而 iframe 可以有自己独立的 CSP。如果您可以控制 iframe,则可以在 iframe 内发布任何特定的 CSP 标头或元标记。如果没有 CSP,任何内联样式都将被允许在此类 iframe 中使用。

请注意,带有srcdoc=的 iframe和带有data:Url// like的 iframe会继承父文档的 CSP,因为这样的 iframe 不会创建完全隔离的浏览上下文。blob:Urljavascript:Url<iframe src='data:text/html;charset=utf-8,...'>


推荐阅读