У меня есть следующий Angular файл конфигурации Service Worker:
{
"index": "/index.html",
"dataGroups": [
// some data API specific caching strategies follow
],
"assetGroups": [
{
"name": "app",
"installMode": "prefetch",
"resources": {
"files": [
"/favicon.ico",
"/index.html",
"/*.css",
"/*.js",
"/*.map"
]
}
},
{
"name": "assets",
"installMode": "lazy",
"updateMode": "prefetch",
"resources": {
"files": [
"/assets/**",
"/*.(eot|svg|cur|jpg|png|webp|gif|otf|ttf|woff|woff2|ani)"
]
}
}
]
}
В целом он работает нормально.
Однако на этапе входа в систему у нас есть несколько перенаправлений - сервер возвращает 302 с заголовком Location, который содержит некоторые коды аутентификации. Проблема в том, что браузер, кажется, молча проглатывает ответ и превращает его в 200. Я вижу Chrome Сетевые инструменты, показывающие Status Code: 200 (from ServiceWorker)
вместо Status Code: 302
. Это полностью нарушает процесс аутентификации, и пользователи застревают в refre sh l oop.
К сожалению, у меня нет полного контроля над запрашиваемым URL-адресом, и я не могу перехватить ответ - все это выполняется сторонней библиотекой.
Я хотел бы как-то указать Angular и браузеру, чтобы они обрабатывали некоторые специфические c HTTP-запросы как не обслуживаемые сервисным работником, по сути, чтобы они работали так же хорошо старые простые HTTP-запросы - как если бы сервис-воркер вообще не был установлен или как если бы запрос был отправлен в другой домен.
Есть ли какой-либо параметр для полного отключения сервис-воркера для определенных c URL-адресов? Как правильно это сделать?