在没有完全https网站的情况下,html5中的推送通知是否可行?

时间:2015-05-30 04:31:20

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

看起来推送通知最终可用于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?

4 个答案:

答案 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)

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

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

答案 2 :(得分:0)

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

以下是MDN上addAll()的摘要:

  

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

服务人员可以要求&缓存HTTPHTTPS的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创建了一个演示