2017-10-15 173 views
-1

Docs聲稱:Chrome擴展:Serviceworker跨源未能

通過添加主機或主機匹配圖案(或兩者)的清單文件的權限部分,延伸可以請求訪問的外部的遠程服務器它的起源

我≪ manifest.json的≫:

{"manifest_version":2,"name":"","version":"0","permissions":["http://example.org/"],"background":{"scripts":["asd"]}} 

<ASD>:

navigator.serviceWorker.register('sdf.js',{scope:'http://example.org/'}).then(x=>console.log('done', x)) 

<sdf.js>:

addEventListener('fetch', e=> e.respondWith(new Response('url: '+e.request.url,{headers:{'content-type':'text/html'/*, etc*/}}))) 

予加載使用≪加載已解壓的擴展≫代碼;它墜毀沒有任何錯誤信息:

enter image description here

顯然代碼"permissions":["http://example.org/"]墜毀的擴展。

如何設置Chrome擴展跨源ServiceManager的權限?是否有必要的Chrome標誌?

+0

只是沒有執行,我猜。嘗試在運行站點URL的tab/iframe的內容腳本中執行此操作。 – wOxxOm

+0

@wOxxOm,用[code here](https://jsfiddle.net/jd2qvtgp/)嘗試,但是未被捕獲(承諾)DOMException:無法註冊ServiceWorker:提供的scriptURL的原點('chrome-extension: // pgmcjkmokcicmebpjlmblnhfnfgooghm')與當前原點('https://example.org')不匹配。任何其他策略? – Pacerier

+0

如果您面臨明顯的崩潰,請[查看日誌](https://www.chromium.org/for-testers/enable-logging)。 – Xan

回答

0

正如各位在評論中指出的那樣,服務人員不可能控制Chrome擴展程序,也不可能在Chrome擴展程序的上下文中註冊範圍爲https:的服務人員。