我正在尝试为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.