是什么导致无法在“ServiceWorkerGlobalScope”上执行“fetch”:“only-if-cached”只能设置为“same-origin”模式错误?

IT技术 javascript service-worker fetch-api
2021-03-02 08:17:34

升级到 Chrome 64 后,我意识到在新选项卡上加载页面时会出现此错误。

在此处输入图片说明

我无法确定它在 Service Worker 上的位置。这是我运行提取的代码:

self.addEventListener('fetch', function(event) {
   if (event.request.url.startsWith(self.location.origin)) {
       event.respondWith(
           caches.match(event.request).then(function(response) {
              return response || fetch(event.request).then(function(fetch_resp){
                  return fetch_resp;
              });
           })
       );
   }
});

这里有谁对 Service Worker 有更多了解,可以帮我解决这个错误吗?

3个回答

我相信这是此处报告的 Chromium 错误希望它会很快得到修复,或者有关该问题的更多信息将被发布。

Paul Irish 实施了一项临时解决方案,如下所示:

if (e.request.cache === 'only-if-cached' && e.request.mode !== 'same-origin') {
  return;
}

我在 service workerinstallfetchlisteners的回调中运行它,它防止了错误。

您可以在此处查看 Paul 代码完整提交

@llllllllllllllIllllIll Chromium 是 Chrome 浏览器所基于的开源项目。Chrome 作为浏览器包括需要许可的附加功能和技术 - Chromium 不包括这些内容以及其他较小的差异。en.wikipedia.org/wiki/Chromium_(web_browser)
2021-04-18 08:17:34
在 Google Chrome 上的 Outlook.com 上获取它,这与 Chromium 相同吗?
2021-04-28 08:17:34

对于那些再次搜索这个的人来说,当有人打开 devtools 时,它似乎在一段时间后再次弹出,您仍然可以看到问题中提到的错误。

在此处查看(新)错误报告:https : //bugs.chromium.org/p/chromium/issues/detail?id=1098389

所以让我们希望这会很快再次修复!

也许缓存名称与其他应用程序不是唯一的,似乎为我解决了这个问题。