我正在尝试为 Google Chrome 实现推送通知。我想从不同的域注册服务人员。
示例:Service Worker 代码位于:https ://example.com/
我想从不同的域注册服务工作者(位于上述域):https ://example2.com/
有没有办法达到同样的效果。因为当我尝试将服务工作人员页面(示例)包含为 iFrame 时,服务工作人员在注册时会引发错误
“未捕获(承诺)DOMException:注册失败 - 权限被拒绝”
我正在尝试为 Google Chrome 实现推送通知。我想从不同的域注册服务人员。
示例:Service Worker 代码位于:https ://example.com/
我想从不同的域注册服务工作者(位于上述域):https ://example2.com/
有没有办法达到同样的效果。因为当我尝试将服务工作人员页面(示例)包含为 iFrame 时,服务工作人员在注册时会引发错误
“未捕获(承诺)DOMException:注册失败 - 权限被拒绝”
这似乎不可能,因为如果 scriptURL 的来源不是客户端的来源,则被SecurityError拒绝的 Promise 中将包含一个例外。请参阅注册算法的规范。
即使可能,这样做也没有什么好处,因为服务工作者的scopeURL 必须与注册服务工作者的页面具有相同的来源。
关于 iFrame,有一些限制可以防止您在 http: 页面上抛出 https: 并使用它来注册 service worker。在 https iframe 中注册 service worker 时,请参阅DOMException 。