HTML5 Iframe:阻止远程请求

asl*_*rai 3 javascript iframe html5 sandbox

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

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

提前致谢

spe*_*bus 5

基础

大概是没有,因为iframe的沙盒是为了避免在主文档和iframe的文档之间共享敏感数据或限制潜在的破坏性行为.

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

如果内部存在的代码srcdoc调用了远程资源,那么浏览器正在通过加载它们来完成您要告诉它的操作.

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

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

话虽这么说,可能存在一种方法来阻止加载资源,方法是Content Security Policy使用meta标签在iframe的文档中使用from :

<meta http-equiv="Content-Security-Policy" content="default-src 'none';">
Run Code Online (Sandbox Code Playgroud)

要么

<meta http-equiv="X-Content-Security-Policy" content="default-src 'none';">
Run Code Online (Sandbox Code Playgroud)

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

错误663570 - 通过标记实施内容安全策略

无论如何,有关更多信息,请参阅: