0

Le navigateur se plaint le fichier se trouve derrière un redirect:Comment servir service-worker.js de spring boot correctement?

DOMException: Failed to register a ServiceWorker: 
The script resource is behind a redirect, which is disallowed. 

Ce que j'ai essayé jusqu'à présent:

Service worker on `static/service-worker.js` 
Service worker on @GetMapping("/service-worker.js") @ResponseBody 

Dans les deux cas, je peux lire le fichier de Brower dans /service-worker.js mais l'inscription échoue avec la même exception.

EDIT: (C'est l'inscription que j'avais des problèmes avec)

<script> 
if ('serviceWorker' in navigator) { 
    console.log("Will the service worker register?"); 
    navigator.serviceWorker.register('service-worker.js') 
     .then(function(reg){ 
      console.log("Yes, it did."); 
     }).catch(function(err) { 
     console.log("No it didn't. This happened: ", err) 
    }); 
} 
</script> 

Répondre

1

Mon script essayant d'enregistrer était /store/All. L'enregistrement avec navigator.serviceWorker.register('service-worker.js') appelait /store/service-worker.js qui était en cours de redirection selon une règle que j'avais programmée dans mon contrôleur.

Le bon appel doit être: navigator.serviceWorker.register('/service-worker.js') Cela garantit que nous appelons le service-worker.js dans root et pas dans le même chemin que la page en cours.

tl; dr Il me manquait un /