2015-12-10 63 views
4

我試圖爲Google Chrome實施推送通知。我想從不同的域註冊服務人員。如何註冊來自不同域的服務工作人員

實施例: 服務工作者代碼位於:https://example.com/

我要註冊從不同的域的服務人員(其位於上述域):https://example2.com/

是否有任何的方式來實現一樣。因爲當我嘗試包括服務工作者頁面(例如)作爲一個iFrame,而註冊

的服務人員將引發錯誤「未捕獲(在承諾)拋出:DOMException:註冊失敗 - 拒絕的權限 」

+0

我們通過在'window.open'的新彈出窗口中顯示'https:// example.com'來解決這個問題。不是一個完美的解決方案,但比沒有好 – Curious

回答

2

這似乎不可能,因爲如果scriptURL的來源不是客戶端的來源,SecurityError例外將包含在被拒絕的Promise 中。請參閱Registration Algorithm上的規格。

即使可能,這樣做也沒什麼好處,因爲服務工作人員的scope(URL)必須與註冊服務工作者的頁面具有相同的來源。

關於iFrame,有一些限制阻止您在http:頁面上引發https:並使用它來註冊服務工作者。見DOMException when registering service worker inside an https iframe

相關問題