0

我想在 html 页面上显示自治的“站点”(比如“root”)。这些“站点”包含一个登录页面:index.html 和 *.css、.js、 .png 的集合)
自治,我的意思是这些站点没有外部依赖项并且所有路径都是相对的 = 您可以将它们复制到任何目录或将它们托管在任何地方,它们将起作用。
这些站点被压缩在一个包含所有必要文件的存档中。假设我下载没有问题并将所有文件都保存在内存中(作为路径/uint8 数组)

我怎样才能以安全的方式显示该网站?我可以解析 index.html,更改原始文件的 data-url 的所有 src 和 href 并将其加载到 iframe 中。它工作得很好,但是在有这样的脚本的地方会中断

if (extension == "pdf")
 img.src = "images/thumb-pdf.png"

有什么方法可以控制 iframe 提供的 url 吗?某种代理?我可以截取“images/thumb-pdf.png”来提供 MemoryCacheOfAllFiles["images/thumb-pdf.png"].toDataURL() 吗?

PS:当然我无法控制这些网站,我无法将它们存储在服务器上(这很容易)

4

1 回答 1

0

代理可以在 javascript 中使用一个工作人员并监听“获取”事件来推送虚拟内容。

在 iframe 中推送的 html:

...
navigator.serviceWorker.register('worker.js').then(function() {
    logInstall('Installing...');
  })
...

工人.js:

...
self.onfetch = function(event) {
  var cached = (mycache[event.request.url]); // do we have content
  if (cached)
    event.respondWith(new Response(cached.content,{
      headers:{"Content-Type",cached.mimetype}
    }
  else
    event.respondWith(fetch(event.request));
}
...

mozilla 的完整代码用于解压缩并提供内容
https://serviceworke.rs/cache-from-zip.html

于 2021-07-14T12:48:15.820 回答