Lorsque j'essaie d'ajouter un agent de service sur ma page d'applications Web progressive, pourquoi la console du navigateur affiche-t-elle l'erreur suivante?
ERROR "Uncaught (in promise) DOMException: Only secure origins are allowed
Code JS:
(function () {
'use strict';
// TODO add service worker code here
if ('serviceWorker' in navigator) {
navigator.serviceWorker
.register('service-worker.js')
.then(function () {
console.log('Service Worker Registered');
});
}
})();
Essayez d’utiliser http://127.0.0.1:8080 pour l’hébergement local Au lieu de http://192.168.29.53:8080
De Service Worker FAQ :
Q: Je reçois un message d'erreur à propos de "Seules les origines sécurisées sont autorisées". Pourquoi?
A: Les opérateurs de service ne sont disponibles que pour les "origines sécurisées" (sites HTTPS, en principe), conformément à une stratégie préférant les origines sécurisées pour de nouvelles fonctionnalités puissantes. Toutefois, http: // localhost est également considéré comme une origine sécurisée. Si vous le pouvez, le développement sur localhost est un moyen simple d'éviter cette erreur.
Vous pouvez également utiliser l'indicateur de ligne de commande
--unsafely-treat-insecure-Origin-as-secure
. Cet indicateur doit être associé à un indicateur--user-data-dir
. Par exemple:$ ./chrome --user-data-dir=/tmp/foo --unsafely-treat-insecure-Origin-as-secure=http://your.insecure.site
Si vous voulez tester sur https: // localhost avec un certificat auto-signé, faites:
$ ./chrome --allow-insecure-localhost https://localhost
Vous pouvez également trouver le drapeau
--ignore-certificate-errors
utile.
Vous pouvez vérifier le protocole avant d’enregistrer le technicien, comme ceci:
location.protocol === 'https:' && serviceWorker.register('service-worker.js')