我正在尝试将服务工作者放在网站上,我想从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);
});
}
答案 0 :(得分:1)
服务工作者必须来自同一个域 - 因为Service Worker文件的位置非常重要。
<script>
upload_completed('<?php echo $numerolinha ?>');
</script>
注册方法的一个细微之处在于服务的位置 工人档案。在这种情况下,您会注意到服务工作者文件 是域的根源。这意味着服务工作者 范围将是整个起源。换句话说,这个服务工作者 将收到此域上所有内容的获取事件。要是我们 在/example/sw.js注册服务工作者文件,然后注册该服务 worker只会看到URL开头的页面的获取事件 / example /(即/ example / page1 /,/ example / page2 /)。
您可以使用php脚本作为代理从其他地方加载它。