Запретить кеширование POST-запроса на Service Worker - PullRequest
0 голосов
/ 09 января 2020

У меня есть Прогрессивное веб-приложение, которое работает в автономном режиме, но когда оно добавлено в «Домашний экран» на iOS, а у вас go Режим полета (в автономном режиме), отображается экран:

Safari cannot open the page
The error was:
"FetchEvent.respondWith received an error: TypeError: The internet connection appears to be offline."

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

Вот мое событие fetch на моем сервисном работнике

self.addEventListener("fetch", function(event) {
  if (event.request.method == "POST") {
    return;
  }
  event.respondWith(
    caches
      .match(event.request)
      .then(function(res) {
        if (!navigator.onLine) {
          if (res) {
            return res;
          }
          return fetch(event.request);
        } else {
          return fetch(request).then(function(res) {
            if (res) {
              return caches.open(version).then(function(cache) {
                return cache.put(request, res.clone()).then(function() {
                  return res;
                });
              });
            }
          });
        }
      })
      .catch(function(err) {
        console.log("error", error);
      })
  );
});
...