为什么我需要在我的网站上放置 Service Worker 文件以用于 Web 推送通知?
快速背景
Service Workers (SW) 是相对较新的功能,作为渐进式 Web 应用程序计划的一部分,可供所有现代浏览器使用。软件背后的目标是提供以前仅适用于移动应用程序的功能,例如推送通知和离线浏览。
### 解释
这些文件必须上传到网站,而不是通过代码或标签管理器上传(例如 https://www.winzip.com/aimtell-worker.js、https://www.legacy.com/aimtell-worker.js、https://www.blinds.com/aimtell-worker.js) 的原因是两重:
- 该文件实际上完全独立于 DOM/您的网站访问者的“会话”运行。即使他们离开您的网站,SW 仍然运行。这就是我们能够向个人发送通知的方式,即使手机在他们的口袋里,或者他们已经几周没有访问过您的网站并且当前正在浏览亚马逊网站。如果它只是网站上的一个代码,那么只有当有人访问您的网站时才能启动它,而不是具有随时随地推送的强大功能。
- 浏览器强制执行此操作作为一项安全措施,本质上验证您拥有该域。如果没有做到这一点,理论上有人可以找到 XSS 漏洞 (维基百科文章),这反过来可能会成为一个巨大的安全问题,因为他们可以启动恶意软件。
- 通常,XSS 漏洞允许专门设计的 URL 获取访问者的一些敏感数据。当然,这已经很糟糕了,也是互联网上最大的安全问题之一。
- 现在,如果有人能够通过 XSS 启动软件(因为他们只需指向该软件的 CDN 或嵌入 Javascript),他们就能够注册该软件,并且基本上能够开始代表您向查看恶意 URL 的访问者发送推送通知。曾经是一次性安全风险(a.中描述的)现在将是一个跨越数月或数年的漏洞。简单地在您的网站上强制执行软件意味着,即使天堂不允许,有人在您的网站上发现了 XSS 漏洞,他们也无法代表您接管推送通知。
为什么我无法通过我的标签管理器将软件作为标签上传?
大多数标签管理器仅支持上传 Javascript 片段,而不支持上传完整的 javascript 文件。从易于安装的角度来看,我们当然希望可以简单地向站点添加一个 javascript 标签,从而避免上传 SW 文件的需要。
然而,这种限制不仅仅针对 Aimtell,而且是由浏览器本身强制执行的,对于整个网络来说实际上是一件好事。请参阅上述原因,详细了解为什么您需要 Service Worker。
