10

看起来推送通知终于可以用于网络应用了!不幸的是,这需要 ServiceWorker 的 https,并非所有站点都可能有。

我在它提到的规范中注意到的一件事:

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

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

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

4

4 回答 4

1

Simple-push,即 Firefox OS 中当前的推送解决方案,与 ServiceWorkers 没有任何关系。

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

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

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

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

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

devtools.serviceWorkers.testing.enabled: true

但同样这只是为了开发,而 AFAIK、Mozilla 推送已登陆或即将登陆,并且将在每晚构建中可用,您可以在此处关注工作:

于 2015-06-01T08:38:25.550 回答
1

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

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

于 2016-01-24T13:54:08.807 回答
0

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

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

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

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


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

于 2015-05-31T01:17:02.223 回答
0

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

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

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

于 2020-03-07T14:30:07.427 回答