为什么service worker不能在http站点上工作?

Why does service worker won't work on http sites?

本文关键字:站点 工作 http service worker 不能 为什么      更新时间:2023-09-26

我正在学习service worker API。我发现它有更多很酷的功能。但令我兴奋的是为什么它只在https网站上工作,而不是在http网站上?

我相信这与安全有关,但我在浏览时找不到原因。因此,任何解释都是值得赞赏的。

由于service worker非常强大,即使在原始页面不再打开时也可以运行,因此您确实需要限制谁可以设置service worker,谁不能。由于普通HTTP请求很容易成为中间人,任何随机的Javascript都可以被注入到这样的请求中,这可能会建立一个service worker。这意味着,你的ISP,像中国这样的政府,或者一个严重的攻击者可以很容易地设置服务工作者。通过要求HTTPS连接,在很大程度上避免了中间人,并且您至少可以确保设置service worker的Javascript实际上来自您认为的页面。

补充@ decze的答案,如果攻击者中间人连接到一个HTTP站点,它只能在这一次破坏该站点-稍后连接到该站点不能保证被破坏,例如依赖于本地网络访问的攻击,可能不容易复制。

如果一个人可以在http网站上使用service worker,那么攻击者只需要进行一次中间人攻击就可以永远(或者至少直到该浏览器被清除)获得该网站内容的来源。