2016-08-25 23 views
6

Tôi hiện đang làm việc cho nhân viên dịch vụ để xử lý thông báo đẩy trong trình duyệt. Hiện tại tôi đang gặp lỗi "đăng ký SW không thành công" này. Bất cứ ai có thể giúp đỡ với vấn đề này? Kiểm tra client1.htmlservice-worker.js tập tin dưới đây:Đăng ký nhân viên dịch vụ không thành công

LỖI:

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

dịch vụ 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

Đối số thứ nhất cho 'ServiceWorkerContainer.register' là một URL. Thông báo lỗi cho biết trình duyệt của bạn từ chối sử dụng tài nguyên vì nguồn gốc là rỗng - điều này thường xảy ra đối với tài nguyên cục bộ (file: //). 'service-worker.js' là local - Tôi sẽ đặt cược đây là lý do tại sao bạn gặp vấn đề về nguồn gốc chéo – Tibrogargan

+0

Cảm ơn bạn đã giải quyết vấn đề bằng cách đặt thư mục của tôi vào localhost –

+0

Tôi không thấy bất kỳ tham chiếu nào đến Pusher trong mã. Tại sao câu hỏi này lại có thẻ ['pusher'] (http://stackoverflow.com/questions/tagged/pusher)? –

Trả lời

11

Giải quyết: Điều đầu tiên là nhân viên dịch vụ chỉ hoạt động ở chế độ an toàn hoặc bằng https hoặc localhost. Nó không hoạt động trong các tài nguyên cục bộ như tệp: // hoặc http.

và vấn đề thứ hai là khi đăng ký.

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

https://www.chromium.org/Home/chromium-security/prefer-secure-origins-for-powerful-new-features Theo tài liệu này, cần được hỗ trợ: “Nguồn gốc an toàn” là nguồn gốc khớp với ít nhất một trong các mẫu sau (sơ đồ, máy chủ, cổng): (https, *, *) (wss, *, *) (*, localhost, *) (*, 127/8, *) (*, :: 1/128, *) (tệp, *, -) (tiện ích chrome, *, -) –

Các vấn đề liên quan