Браузер: Firefox 58.0.2 (64-бит)
Я пытаюсь написать очень простого сервис-воркера для кэширования контента в автономном режиме, следуя инструкциям здесь и здесь.
Когда я загружаю страницу в первый раз, сервис-воркер установлен правильно. Я могу подтвердить, что он работает, заглянув в about: debugging # worker.
Однако на этом этапе, если я пытаюсь обновить страницу (онлайн или офлайн) или перейти на любую другую страницу сайта, я получаю следующую ошибку:
На сайте https://[my url]) обнаружено нарушение сетевого протокола, которое невозможно исправить.
Страница, которую вы пытаетесь просмотреть, не может быть отображена, поскольку была обнаружена ошибка передачи данных.
Пожалуйста, свяжитесь с владельцами веб-сайтов, чтобы сообщить им об этой проблеме.
Консоль показывает эту ошибку:
Не удалось загрузить «https://[my url]». ServiceWorker передал перенаправленный ответ на FetchEvent.respondWith (), в то время как RedirectMode не является «follow».
В Chrome я получаю следующее:
Неперехваченный (в обещании) TypeError: не удалось выполнить «выборку» для «ServiceWorkerGlobalScope»: невозможно создать запрос с запросом, режим которого - «навигация», и непустым RequestInit.
В этом потоке я добавил параметр {redirect: "follow"} к функции fetch (), но безрезультатно .
(Да, я вручную удалил Service Worker со страницы about: debugging после внесения изменений.)
Однако, насколько я понимаю, проблема возникает из-за ответа, а не выборки, верно? И это из-за того, что мой сервер выдает перенаправление при обслуживании запрошенного контента?
Итак, как мне бороться с перенаправлениями в сервис-воркере? Очевидно, что они будут, и я все еще хочу кэшировать данные.