javascript - 中止错误: Failed to register a ServiceWorker: ServiceWorker cannot be started

标签 javascript google-chrome https service-worker self-signed

我正在尝试在 Chrome 中测试推送通知功能。我在此处克隆了 Google 提供的示例 Chrome 推送通知 Web 应用程序:https://github.com/GoogleChrome/samples/tree/gh-pages/push-messaging-and-notifications

当我使用 Web server for Chrome extension 托管 Web 应用程序时,代码运行正常本地主机上的 HTTP 服务器。当我想在移动设备上测试 Web 应用程序时,我无法将 Web 服务器用于 Chrome 扩展,因为它是 HTTP 服务器,除了 localhost 之外,服务工作线程仅在 HTTPS 上工作。因此,我使用自签名证书创建了一个基于 Python 的 HTTPS 服务器,并在那里托管了 Web 应用程序。

现在我收到AbortError: 无法注册 ServiceWorker: ServiceWorker 无法启动 注册 Service Worker 时如下所示:

    navigator.serviceWorker.register('./service-worker.js')

service-worker.js 与 html 文件以及我调用此方法的 js 文件位于同一目录中。

关于 Service Worker 的文档并不多。而且这个错误太模糊了,无法弄清楚任何事情。请帮助我找出此错误的根本原因。

最佳答案

我找到了解决方案。 Service Worker 仅在安全的 HTTPS 网络上工作。我创建的 Python HTTPS 服务器是使用自签名证书进行签名的,因此不安全。我使用 ngrok 创建了一个到本地主机的安全 https 隧道,然后它就工作了

关于javascript - 中止错误: Failed to register a ServiceWorker: ServiceWorker cannot be started,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41430841/

相关文章:

javascript - iOS 版 Chrome 上的箭头功能

javascript - localStorage 在 chrome mobile android 中为 null

javascript - JS 警报或追加在 DOM 上不起作用

javascript - javascript 中数组末尾的未知元素?

jQuery 隐藏/显示包含 Highcharts 的 div

javascript - 是否可以配置 IE 以允许 XHR 到 `http://127.0.0.1 from` HTTPS?

ios - 如何让 iOS Safari 为基本认证网站保存密码?

javascript - D3 js 从包含特定键值的对象中获取一个 d3.max

javascript - 在 Bootstrap 中更改表单样式以进行验证

android - 通过 https 的 Volley Request 仅适用于 Wifi (wlan) 但不适用于 3G/GPRS (umts)