html5 – 如何从其他域注册服务工作者

我正在尝试为Google Chrome实施推送通知.我想从不同的域注册服务工作者.

例:
服务工作者代码位于:https://example.com/

我想从不同的域注册服务工作者(位于上面的域):https://example2.com/

有没有办法实现同样的目标.因为当我尝试将服务工作者页面(示例)包含为iFrame时,服务工作者在注册时会抛出错误

“Uncaught (in promise) DOMException: Registration failed – permission
denied”

最佳答案 这似乎不可能,因为如果scriptURL的来源不是客户的来源,则被拒绝的Promise中将包含
SecurityError例外.请参阅
Registration Algorithm的规格.

即使可能,这样做的好处也很少,因为服务工作者的scope(URL)必须与注册服务工作者的页面具有相同的来源.

关于iFrame,存在一些限制,以防止您在http:页面上抛出https:并使用它来注册服务工作者.见DOMException when registering service worker inside an https iframe.

点赞