Я нашел рабочее решение, свойство navigationUrls
в ngsw-config.json
содержит список включенных или исключенных URL-адресов навигации (с восклицательным знаком), как описано в документации .
Затем я настроил его следующим образом:
"navigationUrls": [
"!/**"
]
Таким образом, ни один из URL-адресов не перенаправляется на index.html
, и приложение, отображаемое на стороне сервера, вступает в игру при первом запросе (или обновлении) приложения.независимо от того, какой это URL-адрес.
Чтобы пойти дальше, три вида URL-адресов, которыми управляет работник сервиса:
- Не навигационные URL-адреса: статические файлы, кэшированные работником сервиса иперечислены в сгенерированном файле
ngsw.json
с соответствующими им хэшами - URL-адреса навигации: по умолчанию перенаправляются на
index.html
, перенаправляются на сервер, если используется конфигурация "!/**"
GET
запросы к бэкэнду: перенаправлены на бэкэнд
Чтобы отличить GET
XMLHttpRequest
от запроса навигации, работник сервиса использует Request.mode property и заголовок Accept
, который содержит text/html
при навигации и application/json, text/plain, */*
при запросе серверной части.