4

我正在尝试为 Google Chrome 实现推送通知。我想从不同的域注册服务人员。

示例:Service Worker 代码位于:https ://example.com/

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

有没有办法达到同样的效果。因为当我尝试将服务工作人员页面(示例)包含为 iFrame 时,服务工作人员在注册时会引发错误

“未捕获(承诺)DOMException:注册失败 - 权限被拒绝”

4

1 回答 1

2

这似乎不可能,因为如果 scriptURL 的来源不是客户端的来源,则被SecurityError拒绝的 Promise 中将包含一个例外。请参阅注册算法的规范。

即使可能,这样做也没有什么好处,因为服务工作者的scopeURL 必须与注册服务工作者的页面具有相同的来源。

关于 iFrame,有一些限制可以防止您在 http: 页面上抛出 https: 并使用它来注册 service worker。在 https iframe 中注册 service worker 时,请参阅DOMException 。

于 2015-12-17T02:50:52.033 回答