是啥导致无法在“ServiceWorkerGlobalScope”上执行“获取”:“仅当缓存”只能设置为“同源”模式错误?

Posted

技术标签:

【中文标题】是啥导致无法在“ServiceWorkerGlobalScope”上执行“获取”:“仅当缓存”只能设置为“同源”模式错误?【英文标题】:What causes a Failed to execute 'fetch' on 'ServiceWorkerGlobalScope': 'only-if-cached' can be set only with 'same-origin' mode error?是什么导致无法在“ServiceWorkerGlobalScope”上执行“获取”:“仅当缓存”只能设置为“同源”模式错误? 【发布时间】:2018-07-05 22:02:51 【问题描述】:

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

我无法确定它在服务人员身上的位置。这是我运行 fetch 的代码:

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有更多的了解,可以帮我解决这个错误吗?

【问题讨论】:

我正在调查一下。同时,您是否仅在 DevTools 打开时才看到此错误?我知道这很难弄清楚,因为如果不打开 DevTools 就不一定能检查错误...我问的原因是 github.com/paulirish/caltrainschedule.io/pull/51/files 听起来很相似。 这里是some documention,所以好像和Request.cache API有关。 【参考方案1】:

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

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

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

我在服务工作者 installfetch 侦听器的回调中运行它,它防止了错误。

你可以看到full commit of Paul's code here。

【讨论】:

在谷歌浏览器的 Outlook.com 上获取它,这和 Chromium 一样吗? @llllllllllllllIllllIll Chromium 是 Chrome 浏览器所基于的开源项目。 Chrome 作为浏览器包括需要许可的附加功能和技术 - Chromium 不包括这些内容以及其他较小的差异。 en.wikipedia.org/wiki/Chromium_(web_browser)【参考方案2】:

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

【讨论】:

【参考方案3】:

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

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

所以我们希望这个问题能很快再次得到解决!

【讨论】:

以上是关于是啥导致无法在“ServiceWorkerGlobalScope”上执行“获取”:“仅当缓存”只能设置为“同源”模式错误?的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 2015 中重命名时导致“无法解决的冲突”的原因是啥?

是啥导致无法在纯 JavaScript 中检测到滚动到 HTML 元素的底部?

在 Windows 机器上运行 Postgresql 11 时导致“更多无法识别...”错误的原因是啥?

是啥原因导致:“创建模型时无法使用上下文。”?

是啥导致 MS Visual Studio 无法识别构建错误?

是啥导致 keytool 错误“无法解密安全内容条目”?