2016-02-12 12 views
6

Le directory MY sono le seguenti.Come registrare l'ambito di un operatore di un servizio sopra la directory in cui si trova service_worker.js

public_html/ 
sw/ 

Il "sw /" è dove voglio mettere tutti i lavoratori dei servizi, ma poi avere quei lavoratori dei servizi, con un campo di applicazione a tutti i file in "public_html /".

JS

<script> 
if ('serviceWorker' in navigator) { 
    navigator.serviceWorker.register('sw/notifications.js', { scope: '../sw/' }).then(function(reg) { 
    // registration worked 
    console.log('Registration succeeded. Scope is ' + reg.scope); 
    }).catch(function(error) { 
    // registration failed 
    console.log('Registration failed with ' + error); 
    }); 
}; 
</script> 

Come faccio a consentire questo tipo di scopo?

risposta

12

Il max scope for a service worker is where it is located. Ciò significa che non è possibile registrare un operatore di servizio situato a /sw/ in scope: '/public_html/' a meno che non si includa un'intestazione speciale Service-Worker-Allowed impostata sul nuovo ambito massimo per l'addetto all'assistenza.

Riassumendo, se è possibile aggiungere questa intestazione quando serve l'operaio di servizio, impostarlo come segue:

Service-Worker-Allowed: /public_html/ 

In caso contrario, è necessario inserire il sw in qualche posizione al di sopra della portata.

4

Modificare la proprietà scope dell'oggetto opzioni di registrazione (il secondo parametro di navigator.serviceWorker.register()) nell'URL a cui si desidera che l'operatore del servizio sia interessato. Nel tuo caso, questo potrebbe essere ../public_html.

// ... 
navigator.serviceWorker.register('sw/notifications.js', { scope: '../public_html/' }) 
// ... 

quel parametro sarà di default a ./ (relativa allo script ServiceWorker) se le opzioni oggetto non è fornito, o ha alcuna proprietà scope.

Inoltre, impostando un scope con qualsiasi origin diverso dall'origine corrente will reject the registration Promise with a SecurityError exception.


Riferimenti:

https://www.w3.org/TR/service-workers/#navigator-service-worker-register

https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/register#Parameters

+3

Ciò genera un errore che indica che l'ambito è al di fuori dell'ambito consentito. È inoltre necessario impostare l'intestazione secondo l'altra risposta. –

Problemi correlati