Em geral, você precisa veicular sua página e o script do service worker via HTTPS para usar service workers. A justificativa é descrita em Preferir origens seguras para novos recursos poderosos .
Há uma exceção ao requisito de HTTPS para facilitar o desenvolvimento local: se você acessar sua página e o script do service worker por meio http://localhost[:port]
ou via http://127.x.y.z[:port]
, os service workers devem ser ativados sem nenhuma ação adicional.
Em versões recentes do Chrome, você pode contornar esse requisito durante o desenvolvimento local via chrome://flags/#unsafely-treat-insecure-origin-as-secure
, conforme explicado nesta resposta .
O Firefox oferece funcionalidade semelhante , por meio da devtools.serviceWorkers.testing.enabled
configuração.
Observe que esta funcionalidade é apenas para facilitar o teste que de outra forma não seria possível, e você deve sempre planejar o uso de HTTPS ao veicular a versão de produção do seu site. Não peça aos usuários reais para seguirem as etapas de habilitação desses sinalizadores!
devtools.serviceWorkers.testing.enabled
.Se você deseja depurar um service worker de um dispositivo móvel conectado de um para um teste de comportamento real de um aplicativo da web progressivo, as opções de início do ssl chrome não ajudam e você definitivamente não precisa comprar certificados.
@chris-ruppel mencionou a instalação de software proxy, mas na verdade existe uma maneira mais fácil de usar o encaminhamento de porta :
Supondo que você conecte e depure seu dispositivo usando o Chrome:
Depois de fazer isso, você pode chamar o URL " http: // localhost: 8080 " no seu celular dispositivo e será respondido por "localhost: 80" em seu PC / servidor de teste real . Funciona perfeitamente com service workers como se fosse sua máquina local rodando em seu celular.
Funciona também para múltiplos encaminhamentos de porta e diferentes domínios de destino, desde que você se lembre de usar portas sem privilégios em seu dispositivo móvel. Veja a imagem:
A fonte dessas informações é a documentação dos dispositivos remotos do Google: https://developers.google.com/web/tools/chrome-devtools/remote-debugging/local-server (mas desde abril de 2017 não é muito claro ler isso resposta simples fora disso)
fonte
Freqüentemente, desejo depurar e testar em um dispositivo real. Um método que descobri envolve o roteamento do tráfego de rede do telefone por meio do Charles Proxy durante o desenvolvimento local. Ao contrário de todas as soluções específicas do Chrome, isso funciona com qualquer navegador do telefone.
localhost
em meu dispositivo móvel agora permite que o Service Worker seja registrado e testado.fonte
A maneira mais fácil de testar o pwa, no meu caso, era usando o ngrok. https://ngrok.com/download faça login, obtenha seu token e configure-o!
Ao executar,
./ngrok http {your server port}
certifique-se de usar https, que será mostrado no terminal após a execução do comando acima.Você pode usar https://surge.sh também, é para hospedar uma página da web estática, se você visitar aqui: https://surge.sh/help/securing-your-custom-domain-with-ssl será capaz de veja como configurar um certificado SSL
fonte
Como Jeff mencionou na primeira resposta, você não precisa de https no nível de host local para testar Service Workers. Os service workers se registrarão e funcionarão bem, desde que você acesse o domínio localhost - sem HTTPS.
Depois de testar seu aplicativo no localhost e quiser ver como ele funciona com https de verdade, a abordagem mais simples seria carregar seu aplicativo no GitHub. Você pode criar um domínio público gratuitamente (e com HTTPS!).
Aqui estão as instruções: https://pages.github.com/
fonte
Se você deseja testar service workers em um dispositivo cliente que não pode executar um servidor da web no localhost, a técnica geral é a seguinte:
Mas isso é mais fácil dizer do que fazer. Em um AMA de novembro de 2016 no Reddit, um representante do Let's Encrypt reconheceu que HTTPS em uma LAN privada "é uma pergunta realmente difícil e acho que ninguém apresentou uma resposta satisfatória até agora."
Maneiras comuns de dar ao seu computador um nome de host envolvem dar a ele um endereço IP interno estável, não um que mude diariamente ou toda vez que você reinicia o seu dispositivo de gateway de Internet. Você precisará configurar o servidor DHCP em sua rede, geralmente em seu gateway, para configurar uma "reserva" que associa um endereço privado específico (normalmente em
10/8
ou192.168/16
) com o endereço MAC da placa Ethernet da estação de trabalho de desenvolvimento. Para isso, leia o manual do seu gateway.Agora que sua estação de trabalho de desenvolvimento tem um endereço IP estável, há uma troca de tempo / dinheiro. Se você deseja aprender o uso avançado de DNS e OpenSSL e instalar um certificado raiz em todos os dispositivos com os quais planeja testar:
Se você não pode adicionar um certificado raiz ou controlar o DNS local, como se você planeja testar com dispositivos de terceiros (BYOD) ou com mais navegadores bloqueados que não permitem que os usuários adicionem certificados raiz confiáveis, como os principais consoles de videogame, você precisará de um nome de domínio totalmente qualificado (FQDN):
A
registro para o endereço IP privado da estação de trabalho de desenvolvimento. Isso fornece um FQDN à sua estação de trabalho de desenvolvimento.dns-01
desafio, para obter um certificado para este FQDN da autoridade de certificação Let's Encrypt.fonte
Acho que a maneira mais fácil de testar o service worker é encontrar um provedor de hospedagem gratuito. hoje em dia, existem muitos sites que oferecem hospedagem gratuita. você pode facilmente hospedar seu aplicativo nesses servidores gratuitos.
Eu uso principalmente heroku e netlify . isso é gratuito e fácil de usar.
fonte