0

我正在尝试使用 Web 开发工具 Webflow 构建 PWA。它是一个网页设计平台,它还管理托管。它允许我将代码嵌入到<head>文档中或之后,但它不允许我将任何文件添加到服务器。我正在使用data:url 添加清单文件,效果很好。但是,我发现很难添加服务人员。

我尝试将service-worker.js文件托管在另一台服务器上,并使用navigator.serviceWorker.register('url_of_sw.js')但它给了我一个原始错误:ServiceWorker registration failed: DOMException: Failed to register a ServiceWorker: The origin of the provided scriptURL ('script_url') does not match the current origin ('site_url').

我通过 using 尝试了一个data:url navigator.serviceWorker.register('data:encoded_data'),它说该协议不受支持。

有没有办法在不访问本地文件存储的情况下注册服务工作者?我知道如果我可以通过设置来控制子域,我可以做到这一点document.domain。我想假设我不能这样做。

4

1 回答 1

0

这似乎是一个浏览器安全限制。试想一下,有人 XSS 这个网站,那么所有的请求都会被控制。有危险。

只有 service worker 有这个限制。对于 WebWorker,您可以尝试:

const makeWorker = (workerFn) => {
  const fnStr = `(${workerFn.toString()})()`;
  const fnBolb = new Blob([fnStr]);
  const fnUrl = URL.createObjectURL(fnBolb);
  const worker = new Worker(fnUrl);
  return worker;
};
于 2020-08-29T13:18:12.590 回答