不受扩展身份限制的 API

了解 unrestrictedApi 如何扩大 JavaScript 开放范围,以及为何它不会授予能力或向页面开放密码 API。

能力:unrestrictedApi。不需要 EP 开关或方法调用。它改变 chrovia 根对象的开放范围,不改变各 API 域的能力要求。

默认与扩大后的开放范围

上下文默认拥有 unrestrictedApi
Provision 扩展 Service Worker可访问 chrovia可访问
普通 Window 页面不可访问可访问
扩展 popup 或标签页不可访问可访问
非 Provision Service Worker不可访问可访问

只能使用该上下文支持的接口。例如 automation 仅限 Window。应使用 Window 或 Service Worker 上下文,不支持 DedicatedWorker 和 SharedWorker。

passwords 是例外:即使拥有此能力,它仍只对 Provision 扩展 Service Worker 开放。每个域仍检查自己的能力。仅有 unrestrictedApi 不会获得 networkInterceptextendedPrefsautomation

在受控页面使用

页面需要读取实例元数据时,应同时申请 unrestrictedApiinstanceMetadata

const metadata = window.chrovia?.instanceMetadata;
if (metadata) {
  document.title = metadata.public?.label || 'SDK page';
}

元数据文档配置 internal.instance_metadata.public.label,安装已签发 License 和 EP 后重新启动实例。

选择范围更小的集成方式

这是扩大开放范围的能力,不是按域名设置的白名单。浏览器中的其他页面也能访问已授权域。不要仅为工具栏 popup 工作而启用它,应使用 popup 到 Service Worker 的消息

不要把秘密放在页面可访问的 EP 和元数据中。向页面开放 processprefsmessagingnetwork 会影响实例行为,而不仅是调用页面。为自动化启用此能力时,应同时考虑同一 License 上授予的其他能力。

关闭

申请不含 unrestrictedApi 的 License,安装后完全重启。没有 internal.unrestricted_api 开关。Provision Service Worker 仍能使用独立授权的各个域。参见 License 替换