gpt4 book ai didi

javascript - iFrame 中的 Service Worker

转载 作者:行者123 更新时间:2023-12-02 23:15:18 24 4
gpt4 key购买 nike

我正在尝试在 iframe 内初始化服务工作线程。我知道服务 worker 在起源时有安全限制,但据我所知,设置 base 应该可以解决这个问题。

<html>
<base href="http://127.0.0.1:9090">
<script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', function() {
navigator.serviceWorker.register('/sw.js').then(function(reg) {

if(reg.installing) {
console.log('Service worker installing');
} else if(reg.waiting) {
console.log('Service worker installed');
} else if(reg.active) {
console.log('Service worker active');
console.log(self)
}
}).catch(function(error) {
// registration failed
console.log('Registration failed with ' + error);
});
});
}
</script>

错误:注册失败,出现 InvalidStateError:无法注册 ServiceWorker:文档处于无效状态。

如果我修改基础,它会提示来源不同,因此服务工作人员与基础 href 有所联系。我在这里缺少什么?

感谢您的帮助

最佳答案

<base>元素不会更改文档的来源。您可以通过记录 self.origin 来测试这一点.

什么<base>但是,确实可以更改用于解析相对 URL 的基本 URL。在这种情况下,您的 Service Worker 脚本是相对 URL。所以不是相对于 self.location它相对于新基地。

这意味着如果您给出 <base>如果是跨域 URL,那么您的 Service Worker 脚本也将是跨域的。当您尝试注册时,这将触发错误。

关于javascript - iFrame 中的 Service Worker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57189366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com