2016-08-25 78 views
6

Şu anda tarayıcıda push bildirimi işlemek için hizmet çalışanı üzerinde çalışıyorum. Şu anda bu "SW kaydı başarısız oldu" hatası yaşıyorum. Bu konuda yardımcı olan var mı? Kontrol client1.html ve aşağıdaki service-worker.js dosyası:Hizmet İşçisi Kaydı Başarısız Oldu

HATA:

SW registration failed with error SecurityError: Failed to register a ServiceWorker: The URL protocol of the current origin ('null') is not supported.

hizmet worker.js

console.log('Started', self); 
self.addEventListener('install', function(event) { 
    self.skipWaiting(); 
    console.log('Installed', event); 
}); 
self.addEventListener('activate', function(event) { 
console.log('Activated', event); 
}); 
self.addEventListener('push', function(event) { 
    console.log('Push message received', event); 
}); 

client1.html

<!doctype html> 
    <html> 
    <head> 
    <title>Client 1</title> 
    </head> 
    <body> 
    <script> 
    if('serviceWorker' in navigator){ 
     // Register service worker 
     navigator.serviceWorker.register('service-worker.js').then(function(reg){ 
      console.log("SW registration succeeded. Scope is "+reg.scope); 
     }).catch(function(err){ 
      console.error("SW registration failed with error "+err); 
     }); 
    } 
    </script> 
    </body> 
    </html> 
+0

"ServiceWorkerContainer.register" öğesinin 1. argümanı bir URL'dir. Hata iletisi, tarayıcınızın bir kaynağı kullanmayı reddettiğini, çünkü kaynağın null olduğunu gösterir - bu genellikle yerel (dosya: //) kaynakları için olur. 'service-worker.js' yerel - bu yüzden çapraz kaynaklı kaynak sorununu aldığınızı anlatayım – Tibrogargan

+0

Teşekkür ederim Sadece sorunu çözdüm localhost –

+0

içindeki klasörümüzü buraya koyarak İtici için herhangi bir referans görmüyorum kodda. Bu soru neden ['pusher'] (http://stackoverflow.com/questions/tagged/pusher) etiketine sahip? –

cevap

11

Çözüldü: İlk şey servis çalışanı, yalnızca https veya localhost'ta güvenli modda çalışır. Dosya: // veya http gibi yerel kaynaklarda çalışmaz.

ve ikinci sayı kayıt sırasında yapıldı.

 navigator.serviceWorkerContainer.register('service-worker.js').then(function(reg){ 
+0

https://www.chromium.org/Home/chromium-security/prefer-secure-origins-for-powerful-new-features bu dokümana göre, desteklenmelidir: “Güvenli kökenlerini” kökenleri vardır Aşağıdaki (şema, ana makine, bağlantı noktası) desenlerden en az birini eşleştiren: (https, *, *) (wss, *, *) (*, localhost, *) (*, 127/8, *) (*, :: 1/128, *) (dosya, *, -) (krom uzantısı, *, -) –