web-dev-qa-db-fra.com

Quelles sont les causes d'un échec d'exécution de l'extraction sur ServiceWorkerGlobalScope: l'option "only-if-cached" ne peut être définie qu'avec une erreur de mode "same-Origin"?

Après la mise à niveau vers Chrome 64, je me suis rendu compte que cette erreur apparaissait lorsque je chargeais ma page sur un nouvel onglet.

 enter image description here

Je ne peux pas identifier où il se trouve sur le technicien. Voici mon code pour lancer le fetch:

self.addEventListener('fetch', function(event) {
   if (event.request.url.startsWith(self.location.Origin)) {
       event.respondWith(
           caches.match(event.request).then(function(response) {
              return response || fetch(event.request).then(function(fetch_resp){
                  return fetch_resp;
              });
           })
       );
   }
});

Est-ce que quelqu'un ici, qui a plus de connaissances sur le travailleur de service, peut m'aider à résoudre cette erreur?

27
N. Dias

Je crois que c’est un bug du chrome qui a été rapporté ici . J'espère que le problème sera bientôt résolu ou que des informations supplémentaires sur le problème seront publiées.

Paul Irish a implémenté un travail temporaire autour, qui est comme suit:

if (e.request.cache === 'only-if-cached' && e.request.mode !== 'same-Origin') {
  return;
}

Je l'ai exécuté à l'intérieur du rappel pour les auditeurs install et fetch de l'agent de service et cela a permis d'éviter l'erreur.

Vous pouvez voir le full commit du code de Paul ici .

28
rjbultitude

peut-être que le nom du cache n’est pas unique à partir d’autres applications, semble résoudre le problème pour moi.

0
user3067740