看起来推送通知最终可用于web-apps!不幸的是,这需要ServiceWorker的https,并非所有站点都可以使用。
我注意到spec中提到的一件事:
if r's url's scheme is not one of "http" and "https", then:
Throw a TypeError."
所以我很困惑 - 网站是否可以是http,只要它包含来自https的服务工作者?例如,mydomain.com可以包含来自https://anotherdomain.com的https服务工作者?
另一个标准,web-api simple-push,没有提到要求https(可能是文档中的遗漏?),以及" Firefox桌面上的用户体验还没有被提取出来& #34 ;.关于这个过时的文档,还是推送真的只支持FirefoxOS?
答案 0 :(得分:1)
简单推送,即Firefox OS中当前的推送解决方案与ServiceWorkers没有任何关系。
由Google和Mozilla实施的下一代推送将通过ServiceWorkers完成:
在这种情况下,是的,您的内容需要通过HTTPS提供。
您可能会对LetsEncrypt计划感兴趣:
新的证书颁发机构,可帮助开发人员通过HTTPS过渡其内容。
同样仅出于开发目的,如果针对localhost进行开发,Google和Mozilla Serviceforce的实现都允许您绕过安全内容的检查。 对于Mozilla,您需要启用标志:
devtools.serviceWorkers.testing.enabled: true
但是,这仅仅是为了开发,AFAIK,Mozilla推出降落或即将降落,并且将在夜间版本中提供,您可以按照这里的工作:
答案 1 :(得分:1)
答案 2 :(得分:0)
您从规范中引用的文字来自the Cache.addAll()
section (5.4).
以下是MDN上addAll()的摘要:
Cache接口的addAll()方法接受一个URLS数组,检索它们,并将生成的响应对象添加到给定的缓存中。检索期间创建的请求对象成为存储的响应操作的关键。
服务人员可以要求&缓存HTTP
或HTTPS
的URL,但Service Worker本身只能在其注册的Scope(必须是HTTPS)中工作。
简单推送与服务工作者无关;它似乎与其他平台采取的方法相当:
答案 3 :(得分:0)
我找到了一个不错的绕过解决方法,允许来自网站和域的通知不使用SSL,因此对于Firefox,使用http://而不是https://。
Firefox在Mozilla目录中包含一个名为Permissions.sqlite的文件,这是一个SQLite数据库文件,用于保存域的权限。您可以在http://yourdomainname处向您的域添加具有通知权限的域,该域将起作用。
我在https://gist.github.com/caviv/8df5fa11a98e0e33557f75215f691d54的golang中为Windows创建了一个演示