2017-10-15 40 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:的服务人员。