Как выборочно отключить сервис-воркера Angular для указанных c URL? - PullRequest
0 голосов
/ 05 мая 2020

У меня есть следующий 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-адресов? Как правильно это сделать?

...