serviceWorker 本机调试失效

1,160 阅读1分钟

最近项目中,需要测试之前的pwa相关的项目,去确认是否支持每个子页面注册桌面快捷应用。结果出现了在本地项目中无法调试,而线上的可以正常显示,相关代码是一样的。这就很奇怪,之前开发的时候,本地可以正常开发和测试。

  • 同个谷歌浏览器,就排除跟谷歌浏览器版本的问题。
  • 查看线上和本地环境有什么区别,最大的区别发现本地是通过ip代理,会出现不安全的字眼,如下所示

image.png

而线上的确是正常的,没有不安全字眼。

image.png 所以怀疑是不是跟https 和http 有关系。

  • 在两个页面里的控制台,分别输入以下代码,发现本地始终是false,而线上都是true
"serviceWorker" in navigator
  • 因此去MDN网站,查看浏览器的这个属性serviceWorker,在不同协议里有什么区别。结果发现了,官方文档里有对应要求:

image.png

解决方法:

  • 1、在本地调试,只要换成localhost就可以正常调试。
  • 2、在谷歌中,输入chrome://flags/#unsafely-treat-insecure-origin-as-secure 可以把对应不安全的网站设置为安全网站,操作如下:

image.png 成功后,不安全字眼就没了

image.png