Что вызывает сбой при выполнении "fetch" ​​для "ServiceWorkerGlobalScope": "only-if-cached" может быть установлен только с ошибкой режима "same-origin"?

После обновления до Chrome 64 я понял, что эта ошибка появляется, когда я загружаю свою страницу на новой вкладке.

введите описание изображения здесь

Я не могу определить, где находится работник службы. Вот мой код для запуска выборки:

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;
              });
           })
       );
   }
});

Может ли кто-нибудь здесь, кто имеет больше знаний о работнике службы, помочь мне решить эту ошибку?

3 ответа

Я считаю, что это ошибка Chromium, о которой сообщалось здесь. Надеемся, что это будет исправлено в ближайшее время или будет опубликована дополнительная информация о проблеме.

Пол Ирландский реализовал временную работу вокруг, которая заключается в следующем:

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

Я запустил его в обратном вызове для сервисного работника install а также fetch слушатели и это предотвратило ошибку.

Вы можете увидеть полный коммит кода Пола здесь.

Для тех, кто ищет это снова, кажется, что через некоторое время он снова появился, когда кто-то открывает инструменты разработки, вы все еще можете увидеть ошибку, упомянутую в вопросе.

См. (новый) отчет об ошибке здесь: https://bugs.chromium.org/p/chromium/issues/detail?id=1098389

Так что давайте надеяться, что это будет исправлено снова в ближайшее время!

Возможно, имя кеша не уникально для других приложений, кажется, решает проблему для меня.

Другие вопросы по тегам