是否可以在友好的iframe中注册服务工作者?

时间:2018-03-19 07:52:26

标签: javascript iframe service-worker

是否可以从友好的iframe中注册服务工作者?

什么是友好的iframe:

友好的iframe是一个iframe,它与托管在其上的主页共享相同的域。这通常意味着内容是可信的,因此可以“突破”iframe并操纵托管页面上的内容。

一般来说,serviceWorker有一个注册方法,它接收string

所以我可以传递一个完整的绝对路径http://myowndomain.com/myserviceworker.js

澄清myowndomain.com与托管框架域不同。

serviceWorker
 .register('http://myowndomain.com/myserviceworker.js')
  .then(serviceWorker => {
   console.log(serviceWorker);
  }
})

并将其范围扩大到全球范围。 (通过不将范围传递给serviceWorker的options对象来控制当前页面。)

它会起作用吗?

如果是这样,是不是一个安全可靠性?

1 个答案:

答案 0 :(得分:3)

  

所以我可以通过一个完整的绝对路径http://myowndomain.com/myserviceworker.js

     

澄清myowndomain.com与托管框架域不同。

<iframe>window都不能为<iframe>window的来源以外的来源注册服务工作者。

在任何情况下,将包含原点的网址传递给navigator.serviceWorker.register()都不会导致特殊行为。

  • 如果网址的来源与navigator的来源不同,则register()来电将失败。
  • 如果网址的来源与navigator的来源相同,那么register()来电将会成功,但您也可以省略网址的原始部分,只需传入绝对路径(即'/serviceworker.js')。