加载远程服务工作者,在不同的域中运行?

时间:2016-01-08 06:57:44

标签: javascript

我正在尝试将服务工作者放在网站上,我想从CDN加载服务工作者脚本。但是,当我从其他域加载服务工作者时,我收到以下错误。

  

ServiceWorker DOMException:无法注册ServiceWorker:The   提供的scriptURL('https://cdndomain.com')的来源没有   匹配当前来源('http://mydomain')

有没有办法从CDN加载服务工作者?我在那里看到很少推送通知服务,我们可以使用eval在本地执行服务工作者js吗?

这有什么变通方法吗?感谢

以下是我当前代码的样子

 if (navigator.serviceWorker) {
   console.log("ServiceWorkerssupported");

   navigator.serviceWorker.register('https://cdn.com/sw.js', {
     scope: './'
   })
   .then(function(reg) {
     console.log("ServiceWorkerstered", reg);
   })
   .catch(function(error) {
     console.log("Failedegister ServiceWorker", error);
   });
}

1 个答案:

答案 0 :(得分:1)

服务工作者必须来自同一个域 - 因为Service Worker文件的位置非常重要。

<script>
upload_completed('<?php echo $numerolinha ?>'); 
</script>
  

注册方法的一个细微之处在于服务的位置   工人档案。在这种情况下,您会注意到服务工作者文件   是域的根源。这意味着服务工作者   范围将是整个起源。换句话说,这个服务工作者   将收到此域上所有内容的获取事件。要是我们   在/example/sw.js注册服务工作者文件,然后注册该服务   worker只会看到URL开头的页面的获取事件   / example /(即/ example / page1 /,/ example / page2 /)。

您可以使用php脚本作为代理从其他地方加载它。