En general, necesita entregar tanto su página como el script de trabajador de servicio a través de HTTPS para poder utilizar trabajadores de servicio. El fundamento se describe en Preferir orígenes seguros para nuevas funciones potentes .
Existe una excepción al requisito de HTTPS para facilitar el desarrollo local: si accede a su página y al script del trabajador del servicio a través de http://localhost[:port]
, o mediante http://127.x.y.z[:port]
, los trabajadores del servicio deben habilitarse sin más acciones.
En versiones recientes de Chrome, puede solucionar este requisito durante el desarrollo local a través de chrome://flags/#unsafely-treat-insecure-origin-as-secure
, como se explica en esta respuesta .
Firefox ofrece una funcionalidad similar a través de la devtools.serviceWorkers.testing.enabled
configuración.
Tenga en cuenta que esta funcionalidad solo está destinada a facilitar las pruebas que de otro modo no podrían llevarse a cabo, y siempre debe planificar el uso de HTTPS cuando entregue la versión de producción de su sitio. ¡No pida a los usuarios reales que sigan los pasos para habilitar esas banderas!
devtools.serviceWorkers.testing.enabled
.Si desea depurar el trabajador de servicio de un dispositivo móvil conectado de un para una prueba de comportamiento real de una aplicación web progresiva, las opciones de inicio de ssl chrome no ayudan y definitivamente no necesita comprar certificados.
@ chris-ruppel mencionó la instalación de software proxy, pero en realidad hay una forma más fácil de usar el reenvío de puertos :
Suponiendo que conecte y depure su dispositivo usando Chrome:
Después de hacer eso, puede llamar a la URL " http: // localhost: 8080 " en su dispositivo móvil y será respondida por "localhost: 80" en su PC / servidor de prueba real . Funciona perfectamente con los trabajadores del servicio como si fuera su máquina local ejecutándose en su móvil.
Funciona también para múltiples reenvíos de puertos y diferentes dominios de destino, siempre que recuerde usar puertos sin privilegios en su dispositivo móvil. Ver captura de pantalla:
La fuente de esta información es la documentación de dispositivos remotos de Google: https://developers.google.com/web/tools/chrome-devtools/remote-debugging/local-server (pero a abril de 2017 no es muy claro leer esto respuesta simple fuera de eso)
fuente
A menudo quiero depurar y probar en un dispositivo real. Un método que se me ocurrió implica enrutar el tráfico de red del teléfono a través de Charles Proxy durante el desarrollo local. A diferencia de todas las soluciones específicas de Chrome, esto funciona con cualquier navegador de su teléfono.
localhost
en mi dispositivo móvil ahora permite registrar y probar al trabajador de servicio.fuente
La forma más fácil de probar pwa, en mi caso, fue usando ngrok. https://ngrok.com/download inicie sesión, obtenga su token y configúrelo!
Cuando ejecute,
./ngrok http {your server port}
asegúrese de usar https, que se mostrará en la terminal después de ejecutar este comando anterior.Podrías usar https://surge.sh , es para alojar una página web estática, si visita aquí: https://surge.sh/help/securing-your-custom-domain-with-ssl podrá ver cómo configurar un certificado ssl
fuente
Como Jeff mencionó en la primera respuesta, no necesita https en el nivel de localhost para probar Service Workers. Los trabajadores del servicio se registrarán y trabajarán perfectamente siempre que acceda al dominio localhost, sin HTTPS.
Una vez que haya probado su aplicación en localhost y quiera ver cómo funciona con https de verdad, el enfoque más simple sería cargar su aplicación en GitHub. Puede crear un dominio público de forma gratuita (¡y con HTTPS!).
Aquí están las instrucciones: https://pages.github.com/
fuente
Si desea probar los trabajadores del servicio en un dispositivo cliente que no puede ejecutar un servidor web en localhost, la técnica general es la siguiente:
Pero esto es más fácil decirlo que hacerlo. En una AMA de noviembre de 2016 en Reddit, un representante de Let's Encrypt reconoció que HTTPS en una LAN privada "es una pregunta realmente difícil, y creo que nadie ha encontrado una respuesta satisfactoria hasta ahora".
Las formas comunes de asignar un nombre de host a su computadora implican darle una dirección IP interna estable, no una que cambie diariamente o cada vez que apague y encienda su dispositivo de puerta de enlace a Internet. Deberá configurar el servidor DHCP en su red, generalmente el de su puerta de enlace, para configurar una "reserva" que asocie una dirección privada en particular (generalmente dentro
10/8
o192.168/16
) con la dirección MAC de la tarjeta Ethernet de su estación de trabajo de desarrollo. Para ello, lea el manual de su pasarela.Ahora que su estación de trabajo de desarrollo tiene una dirección IP estable, existe una compensación de tiempo / dinero. Si está dispuesto a aprender el uso avanzado de DNS y OpenSSL e instalar un certificado raíz en todos los dispositivos con los que planea probar:
Si no puede agregar un certificado raíz o controlar el DNS local, por ejemplo, si planea probar con dispositivos que son propiedad de otros (BYOD) o con navegadores más bloqueados que no permiten a los usuarios agregar certificados raíz confiables, como los de los principales consolas de videojuegos, necesitará un nombre de dominio completo (FQDN):
A
registro a la dirección IP privada de su estación de trabajo de desarrollo. Esto le da a su estación de trabajo de desarrollo un FQDN.dns-01
desafío, para obtener un certificado para este FQDN de la autoridad de certificación Let's Encrypt.fuente
Creo que la forma más fácil de probar al trabajador del servicio es encontrar un proveedor de alojamiento gratuito. hoy en día, existen muchos sitios que ofrecen alojamiento gratuito. puede alojar fácilmente su aplicación en estos servidores gratuitos.
Sobre todo uso heroku y netlify . esto es gratis y fácil de usar.
fuente