是否可以从友好的 iframe 内注册 Service Worker?
什么是友好的 iframe:
友好的 iframe 是与其托管的主页共享同一域的 iframe。这通常意味着内容是可信的,因此可以“突破” iframe 并操纵托管页面上的内容。
一般来说,serviceWorker 有一个注册方法,它接受一个字符串
。
所以我可以传递完整的绝对路径http://myowndomain.com/myserviceworker.js
澄清一下,myowndomain.com 与托管框架域不同。
serviceWorker
.register('http://myowndomain.com/myserviceworker.js')
.then(serviceWorker => {
console.log(serviceWorker);
}
})
并将其范围扩展到全局范围。 (通过不将范围传递给 serviceWorker 的选项对象来控制当前页面)。
它会起作用吗?
如果是这样,这难道不是一种安全尊崇吗?
最佳答案
so it make sense i can pass a full absolute path http://myowndomain.com/myserviceworker.js
for clarification myowndomain.com is different from the hosting frame domain.
都不是 <iframe>
也不是window
可以为除 <iframe>
之外的其他来源注册 Service Worker或window
.
不存在将包含来源的 URL 传递到 navigator.serviceWorker.register()
的情况。会导致特殊行为。
- 如果 URL 的来源与
navigator
的来源不同,然后register()
调用将会失败。 - 如果 URL 的来源与
navigator
的来源相同,然后register()
调用将会成功,但您也可以省略 URL 的原始部分,而只传递绝对路径(即'/serviceworker.js'
)。
关于javascript - 是否可以在友好的 iframe 中注册 Service Worker?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49358052/