HTML5 iframe:阻止远程请求

HTML5 Iframe: Block remote requests

我正在使用 srcdoc 属性 将 HTML 内容加载到 iframe 中。 iframe 是一个没有权限的沙盒 iframe,因此 iframe 中的所有 Javascript 都被阻止。但是,远程请求(例如 CSS、图像等)仍将在 iframe 内触发。

是否有任何可能的方式告诉 iframe 只加载我在 srcdoc 属性 中提供的内容,而不发出任何其他请求?

提前致谢

基础知识

大概不会,因为对 iframe 进行沙箱化是为了避免在主文档和 iframe 的文档之间共享敏感数据或限制潜在的破坏性行为。

iframe 在功能上仍然是一个浏览器 window 并且将像这样,加载其中声明的所有外部资源,唯一的区别是它显示在另一个文档中而不是另一个 window.

如果 srcdoc 中的代码调用了远程资源,那么浏览器就会按照您告诉它的方式加载它们。

如果您不想加载这些资源,则必须从 srcdoc 代码中编辑它们。

实际上,一个可能的解决方案

也就是说,可能存在一种方法可以通过使用 meta 标签在 iframe 文档中使用 Content Security Policy 来阻止资源加载:

<meta http-equiv="Content-Security-Policy" content="default-src 'none';">

<meta http-equiv="X-Content-Security-Policy" content="default-src 'none';">

我确实在 Firefox 39.0.3 下尝试过,但没有用,可能是因为以下原因:

Bug 663570 - Implement Content Security Policy via tag

无论如何,有关详细信息,请参阅: