Для отображения предупреждения «добавить фолиант на главный экран» я хочу интегрировать сервис-воркера и автономную возможность приложения: когда пользователь находится в автономном режиме, приложение должно просто отображать специальный автономный HTML-файл.
Мой сервис-воркер выглядит так:
importScripts('https://storage.googleapis.com/workbox-cdn/releases/3.1.0/workbox-sw.js');
const CACHE_VERSION = 1;
workbox.core.setCacheNameDetails({
prefix: 'app',
suffix: 'v' + CACHE_VERSION
});
workbox.routing.registerRoute(
'/offline-page.html',
workbox.strategies.networkFirst({
networkTimeoutSeconds: 2,
cacheableResponse: { statuses: [0, 200] },
})
)
workbox.routing.registerRoute(
({ event }) => event.request.mode === 'navigate',
({ url }) =>
fetch(url.href, { credentials: 'include', redirect: 'follow', }).catch(() => caches.match('/offline-page.html'))
)
Но как только мое приложение возвращает перенаправление 302 (например, после входа в систему или выхода из системы), я получаю следующее предупреждающее сообщение в консоли:
Событие FetchEvent для «https://app.com» привело к ответу с сетевой ошибкой: для запрос, режим перенаправления которого не является "отслеживаемым".
а Google Chrome отображает страницу с ошибкой (ERR_FAILED), в которой говорится, что веб-сайт недоступен.
Есть у кого-нибудь идеи, как это исправить?