在我们的项目中,我们已经配置了CSP并传入Response Headers
。我们还有一个简单的Service Worker,它检查是否可以导航到另一个页面,以及是否不能重定向到缓存的脱机html页面。
这是用于获取事件的Service Worker的一部分的代码
self.addEventListener('fetch', function (event) {
event.respondWith(
// Try to find requested resource in the cache
caches
.match(event.request).then(function (response) {
// Fallback to network if it's not in cache
return response || fetch(event.request);
})
.catch(getFallbackResponse(event))
);
});
但是,当更改CSP配置并在更改CSP配置之前安装了Service Worker时,我们得到
Refused to load the script '[url]' because it violates the following Content Security Policy directive: ...
错误。并且,一旦我们更新或注销Service Worker,就会应用新的CSP配置。这是预期的行为吗?
最佳答案
如果看一下MDN对 skipWaiting()
的描述,似乎需要服务人员立即进行更新:
Clients.claim()
是为了确保还可能更新其他可能打开的选项卡中的服务程序。
关于service-worker - 服务人员和CSP配置更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44282029/