我試圖爲Google Chrome實施推送通知。我想從不同的域註冊服務人員。如何註冊來自不同域的服務工作人員
實施例: 服務工作者代碼位於:https://example.com/
我要註冊從不同的域的服務人員(其位於上述域):https://example2.com/
是否有任何的方式來實現一樣。因爲當我嘗試包括服務工作者頁面(例如)作爲一個iFrame,而註冊
的服務人員將引發錯誤「未捕獲(在承諾)拋出:DOMException:註冊失敗 - 拒絕的權限 」
我試圖爲Google Chrome實施推送通知。我想從不同的域註冊服務人員。如何註冊來自不同域的服務工作人員
實施例: 服務工作者代碼位於:https://example.com/
我要註冊從不同的域的服務人員(其位於上述域):https://example2.com/
是否有任何的方式來實現一樣。因爲當我嘗試包括服務工作者頁面(例如)作爲一個iFrame,而註冊
的服務人員將引發錯誤「未捕獲(在承諾)拋出:DOMException:註冊失敗 - 拒絕的權限 」
這似乎不可能,因爲如果scriptURL的來源不是客戶端的來源,SecurityError
例外將包含在被拒絕的Promise 中。請參閱Registration Algorithm上的規格。
即使可能,這樣做也沒什麼好處,因爲服務工作人員的scope
(URL)必須與註冊服務工作者的頁面具有相同的來源。
關於iFrame,有一些限制阻止您在http:頁面上引發https:並使用它來註冊服務工作者。見DOMException when registering service worker inside an https iframe。
我們通過在'window.open'的新彈出窗口中顯示'https:// example.com'來解決這個問題。不是一個完美的解決方案,但比沒有好 – Curious