Understanding Service Worker scope

Ich versuche ein @ zu implementierService Worker auf einer Testseite. Mein Endziel ist eine Anwendung, die offline arbeitet. Die Ordnerstruktur befindet sich unter

/myApp
  ...
  /static
    /mod
      /practice
        service-worker.js
        worker-directives.js
        foopage.js
  /templates
    /practice
      foopage.html

Ich registriere einen Servicemitarbeiter wie unten gezeigt (innerhalb vonservice-worker.js):

navigator.serviceWorker.register('../static/mod/practice/service-worker.js').then,(function(reg) {
    console.log('Registration succeeded. Scope is ' + reg.scope);
    ...
}

und in der Konsole sehe ich

Registration succeeded. Scope is https://example.com/static/mod/practice/

Wenn sich meine Seite unter @ befindhttps://example.com/practice/foopage, muss ich sicherstellen, dass meinservice worker scope ishttps://example.com/practice/foopage?

Wenn ich versuche, den Geltungsbereich im @ zu definierregister Funktionsaufruf wie

navigator.serviceWorker.register('../static/mod/practice/service-worker.js', { scope: '/practice/foopage/' }).then(function(reg) {
    ...
}

Ich erhalte den Fehler

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.

Die Frage ist Was genau machtUmfan beziehen auf? Ist es die Sammlung von URLs, die dasservice worker wird irgendwann kontrollieren? Muss ich umziehenservice-workers.js irgendwo anders? Wenn ja, wo?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage