【问题标题】:Are push notifications possible in html5 without fully https site?在没有完全 https 站点的情况下,html5 中是否可以推送通知?
【发布时间】:2015-08-13 01:41:12
【问题描述】:

看起来推送通知终于可以用于web-apps!不幸的是,这需要对 ServiceWorker 使用 https,而并非所有网站都可能有。

我注意到spec 中提到的一件事:

if r's url's scheme is not one of "http" and "https", then: Throw a TypeError."

所以我很困惑 - 只要网站包含来自 https 的 serviceworker,它可以是 http 吗?例如,mydomain.com 可能包含来自 https://anotherdomain.com 的 https 服务人员?

另一个标准,web-api simple-push,没有提到需要 https(可能是文档中的遗漏?),以及“Firefox 桌面上的用户体验还没有被绘制出来”。这个文档是过时的,还是真的只有 FirefoxOS 支持推送??

【问题讨论】:

  • 这可能是来自 https 的 serviceworker 吗?

标签: html google-chrome firefox-os service-worker web-push


【解决方案1】:

Simple-push,即目前Firefox OS中的push方案,与ServiceWorkers没有任何关系。

由 Google 和 Mozilla 实施的下一代推送将通过 ServiceWorkers 完成:

在这种情况下是的,您的内容将需要通过 HTTPS 提供。

您可能会对 LetsEncrypt 计划感兴趣:

一个新的证书颁发机构,将帮助开发人员通过 HTTPS 转换他们的内容。

同样仅出于开发目的,如果您针对 localhost 进行开发,Google 和 Mozilla 的 ServiceWorkers 实现都允许您绕过安全内容的检查。 对于 Mozilla,您需要启用该标志:

devtools.serviceWorkers.testing.enabled: true

但这又将只是为了开发,AFAIK、Mozilla push 登陆或即将登陆,并将在夜间构建中可用,您可以在此处关注工作:

【讨论】:

  • 所以一个是最新的......但仅在 FirefoxOS 中,一个是“下一代”的推送能力,并且是 HTTPS-only 并且仅在 Chrome 中......?
  • “下一代”,将仅支持 https,但将被 gecko 和 blink(即 Firefox、Chrome 和 Opera)支持
  • 这个答案是错误的,改devtools.serviceWorkers.testing.enabled: trueThe operation is insecure.错误没有影响。
  • Tomáš Zato 首选项将允许您在 localhost 中使用 SW
【解决方案2】:

不,新一代推送通知(即Push API)需要HTTPS。

如果您需要在没有 HTTPS 的情况下向网站添加推送通知,您可以使用第三方服务,例如 Pushpad(我是创始人)代表您发送通知。

【讨论】:

    【解决方案3】:

    您从规范中引用的文本来自the Cache.addAll() section (5.4).

    下面是 MDN 上 addAll() 的总结:

    Cache 接口的 addAll() 方法接受一个 URL 数组,检索它们,并将生成的响应对象添加到给定的缓存中。在检索期间创建的请求对象成为存储响应操作的键。

    Service Worker 可以请求和缓存 HTTPHTTPS 的 URL,但 Service Worker 本身只能在其注册的 Scope 中工作(必须是 HTTPS)。


    simple-push 与 Service Worker 无关;它似乎可以与其他平台采取的方法相媲美:

    【讨论】:

      【解决方案4】:

      我发现了一个很好的绕过解决方法,允许来自没有 SSL 的网站和域的通知,因此 http:// 而不是 https:// 对于 Firefox。

      Firefox 在 Mozilla 目录中保存了一个名为 permissions.sqlite 的文件,它是一个保存域权限的 sqlite 数据库文件。您可以在http://yourdomainname 那里添加您的域并获得通知权限,它会起作用。

      我在这里https://gist.github.com/caviv/8df5fa11a98e0e33557f75215f691d54 在 golang 中为 Windows 创建了一个演示

      【讨论】:

        猜你喜欢
        • 2012-05-22
        • 1970-01-01
        • 2018-08-01
        • 2020-06-15
        • 1970-01-01
        • 1970-01-01
        • 2017-03-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多