Я пытаюсь реализовать Service Worker
на тестовой странице. Моя конечная цель - это приложение, которое работает в автономном режиме. Структура папок ниже
/myApp
...
/static
/mod
/practice
service-worker.js
worker-directives.js
foopage.js
/templates
/practice
foopage.html
Я регистрирую сервисного работника, как показано ниже (в пределах service-worker.js
):
navigator.serviceWorker.register('../static/mod/practice/service-worker.js').then(function(reg) {
console.log('Registration succeeded. Scope is ' + reg.scope);
...
}
а на консоли я вижу
Registration succeeded. Scope is https://example.com/static/mod/practice/
Если моя страница находится в https://example.com/practice/foopage
, мне нужно убедиться, что моя область Service Worker
https://example.com/practice/foopage
?
Если я попытаюсь определить область в вызове функции register
, например
navigator.serviceWorker.register('../static/mod/practice/service-worker.js', { scope: '/practice/foopage/' }).then(function(reg) {
...
}
Я получаю сообщение об ошибке
Registration failed with SecurityError: Failed to register a ServiceWorker: The path of the provided scope ('/practice/foopage/') is not under the max scope allowed ('/static/mod/practice/'). Adjust the scope, move the Service Worker script, or use the Service-Worker-Allowed HTTP header to allow the scope.
Вопрос:. В чем конкретно относится область? Является ли это набором URL-адресов, которые в конечном итоге будет Service Worker
? Мне нужно переместить service-workers.js
в другое место? Если да, то где?