是否可以从友好的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对象来控制当前页面。)
它会起作用吗?如果是这样,是不是一个安全可靠性?
答案 0 :(得分:3)
所以我可以通过一个完整的绝对路径http://myowndomain.com/myserviceworker.js
澄清myowndomain.com与托管框架域不同。
<iframe>
和window
都不能为<iframe>
或window
的来源以外的来源注册服务工作者。
在任何情况下,将包含原点的网址传递给navigator.serviceWorker.register()
都不会导致特殊行为。
navigator
的来源不同,则register()
来电将失败。navigator
的来源相同,那么register()
来电将会成功,但您也可以省略网址的原始部分,只需传入绝对路径(即'/serviceworker.js'
)。