Chrome 应用架构

Chrome 应用与用户操作系统紧密集成。它们设计为在浏览器标签页之外运行,在离线和连接不佳的场景中运行可靠,并提供比典型网络浏览环境更强大的功能。应用容器、编程和安全模型支持这些 Chrome 应用要求。

应用容器模型

应用容器描述了 Chrome 应用的视觉外观和加载行为。Chrome 应用看起来与传统 Web 应用不同,因为应用容器不会显示任何传统网页界面控件,而只是包含空白的矩形区域。这样,应用便可以与系统上的“原生”应用混合在一起,还可以防止用户通过手动更改网址来“混淆”应用逻辑。

Chrome 应用的加载方式与 Web 应用不同。两者都会加载相同类型的内容:使用 CSS 和 JavaScript 加载的 HTML 文档;但是,Chrome 应用会加载在应用容器中,而不是浏览器标签页中。此外,应用容器还必须从本地来源加载 Chrome 应用的主文档。这会强制所有 Chrome 应用至少在离线状态下运行,并且可以提供执行更严格的安全措施。

应用容器模型的工作原理

编程模型

编程模型描述了 Chrome 应用的生命周期和窗口行为。与原生应用类似,此编程模型的目标是让用户及其系统能够完全控制应用生命周期。Chrome 应用生命周期应独立于浏览器窗口行为或网络连接。

“事件页面”通过响应用户手势和系统事件来管理 Chrome 应用的生命周期。 此页面不可见,仅在后台运行,并可由系统运行时自动关闭。它控制窗口的打开和关闭方式,以及应用启动或终止的时间。一个 Chrome 应用只能有一个“事件页面”。

应用生命周期概览

如需详细了解如何使用编程模型,请参阅管理应用生命周期。下面简要介绍了 Chrome 应用生命周期,以帮助您上手:

阶段摘要
安装用户选择安装应用,并明确接受权限
初创公司系统会加载事件页面,触发“launch”事件,并在窗口中打开应用页面。您创建应用所需的窗口、窗口的外观,以及它们与活动页面和其他窗口的通信方式。
终止用户可以随时终止应用,并且应用可以快速恢复到之前的状态。存储数据可防止数据丢失。
更新应用可以随时更新;但是,在启动/终止周期内,Chrome 应用运行的代码无法更改。
卸载用户可以主动卸载应用。卸载后,不会留下任何正在执行的代码或隐私数据。

安全模型

Chrome 应用安全模型通过确保以安全可靠的方式管理用户的信息,从而保护用户。遵守 CSP 包括有关如何遵守内容安全政策的详细信息。此政策可阻止危险脚本,从而减少跨站脚本错误并保护用户免受中间人攻击。

在本地加载 Chrome 应用主页面后,您可以强制执行比网页更严格的安全措施。 与 Chrome 扩展程序一样,用户必须明确同意在安装时信任 Chrome 应用;用户需要授予该应用访问和使用其数据的权限。您的应用使用的每个 API 都有自己的权限。Chrome 应用安全模型还支持按窗口设置权限分离。这样,您就可以尽量减少应用中可访问危险 API 的代码,同时仍可使用它们。

Chrome 应用会重复使用 Chrome 扩展程序进程隔离功能,它进一步隔离了存储空间和外部内容。每个应用都有自己的专用存储区域,无法访问其他应用的存储空间,也无法访问您在浏览器中使用的网站的个人数据(例如 Cookie)。所有外部进程都与应用隔离开来。由于 iframe 与周围页面在同一进程中运行,因此它们只能用于加载其他应用页面。您可以使用 object 标记嵌入外部内容;此类内容在独立于应用的进程中运行。