在我们的项目中,我们已经配置了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对 skip​Waiting() 的描述,似乎需要服务人员立即进行更新:


Clients.claim()是为了确保还可能更新其他可能打开的选项卡中的服务程序。

关于service-worker - 服务人员和CSP配置更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44282029/

10-11 20:10