服务人员 - 使用ngrok在移动设备上进行测试

时间:2018-03-11 10:55:42

标签: javascript google-chrome service-worker progressive-web-apps ngrok

我将service workers合并到我的meteor应用中;在桌面浏览器上一切正常,所以我试图在手机上测试它。

因此该应用程序正在localhost上运行,而我正在运行ngrok,因此我可以通过手机访问该应用。当代码尝试安装service worker时,我收到以下错误:

SecurityError: Failed to register a ServiceWorker: the origin of the provided scriptURL (localhost:3000) does not match the current origin (https://abc123.ngrok.io)

有没有解决方法,所以我可以在开发过程中在手机上使用service workers进行播放?

(这是我的设置,以防它有所作为 - 这是非常标准的)

try {
        navigator.serviceWorker.register(Meteor.absoluteUrl('sw.js')).then((registration) => {
          return registration.pushManager.getSubscription()
          .then((subscription) => {
            if(subscription) {
              return subscription;
            }
            const reg = registration.pushManager.subscribe({
              userVisibleOnly: true,
              applicationServerKey: urlBase64ToUint8Array(publicKey)
            });
            return reg;
          })
          .then((subscription) => {
            savePushRegistration.call({ pushSubscription: JSON.stringify(subscription) });
          });
        })
        .catch((error) => {
          console.info('Can\'t load SW', error); //This is where the error appears
        });
      } catch (e) {
        // We're good here
        // Just an old browser
      }
    });

1 个答案:

答案 0 :(得分:1)

我在笔记本电脑上运行HTTPS网络服务器,如果他们在同一个WiFi网络上,我的设备可以连接到这些服务器。我为我的域配置了短TTL(5分钟)的自定义CNAME,并为他们提供笔记本电脑的IP。我的笔记本电脑服务器会监听这些主机名:

https://laptop-home.example.com
https://laptop-work.example.com
https://laptop-secret-lair.example.com

在计算机上获取本地运行的HTTP超出了此问题的范围,但您应使用可在手机上安装和信任的自定义CA根证书创建自己的自签名证书。然后,当您浏览所有自签名网站时,您将避免使用SSL警告。

比使用远程服务器多一点工作,但如果你想避开外部服务器,这是值得的。