Topics API

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

非标准:此特性未标准化。我们不建议在生产环境中使用非标准特性,因为它们浏览器支持有限,并且可能会更改或被移除。但是,在没有标准选项的特定情况下,它们可以是合适的替代方案。

警告: 此功能目前受到两个浏览器供应商的反对。有关详细信息,请参阅下面的 标准立场 部分。

注意: 在您的应用程序中使用 Topics API 需要一个 注册流程。有关哪些子功能需要注册才能使用的详细信息,请参阅 注册 部分。

Topics API 提供了一种机制,供开发者实现诸如 兴趣导向广告 (IBA) 等用例。这种广告基于浏览器在用户浏览不同页面时收集的主题,而不是由开发者使用 第三方 Cookie 跟踪用户在不同网站上的活动来收集。

概念与用法

网络广告的一个典型机制是用户访问发布商网站,这些网站使用广告技术 (ad tech) 平台为广告商的产品或服务发布广告。发布商会因展示广告而获得报酬,这有助于为其内容提供资金,并为广告商网站带来更多业务。

上述过程可以通过兴趣导向广告 (IBA) 来提高效率。其理念是,当用户访问发布商网站时,他们会看到基于其兴趣的个性化广告。用户的兴趣是通过他们之前访问过的网站推断出来的。过去,第三方跟踪 Cookie 被用于收集用户兴趣信息,但浏览器正在逐步淘汰对越来越多的用户提供第三方 Cookie 的支持。Topics API 为实现这一目标提供了一部分途径——它提供了一种实现 IBA 的机制,而这种机制不依赖于用户跟踪。

首先,浏览器会根据用户访问的、嵌入了广告技术 <iframe> 的网站的 URL 来推断用户的兴趣。这些兴趣会被映射到特定的兴趣主题,并且浏览器会在每个周期结束时计算并记录用户最感兴趣的主题(即,他们的兴趣映射次数最多的主题)。一个周期默认为一周。每周都会更新最感兴趣的主题,以便使兴趣保持最新,避免用户看到他们不再感兴趣的主题的广告。

注意: 此过程仅发生在使用了 Topics API 功能的网站上(请参阅 哪些 API 功能可以启用 Topics API?)。

一旦浏览器观察到一个或多个用户主题,Topics API 就可以检索它们并将它们发送到广告技术平台。然后,该平台可以使用这些主题为用户个性化投放的广告。该 API 通过仅将它们在当前用户访问的页面上被API调用者观察到的主题返回给API调用者来帮助保护隐私。

有关 API 工作原理的说明,请参阅 使用 Topics API

有哪些主题?

浏览器可能计算出的可用热门主题存储在公开可用的兴趣分类表中。最初的分类表由 Chrome 提出,目的是成为一个由可信生态系统贡献者维护的资源。该分类表经过人工精心策划,排除了通常被认为是敏感的类别,例如种族或性取向。

接口

Topics API 没有自己独立定义的接口。

其他接口的扩展

Document.browsingTopics()

返回一个 Promise,该 Promise 会解析为一个对象数组,每个对象代表用户在最近三个周期中的热门主题。默认情况下,该方法还会导致浏览器记录当前页面访问作为调用者所观察到的,以便稍后在主题计算中使用该页面的主机名。

fetch() / Request()browsingTopics 选项

一个布尔值,指定应将当前用户的选定主题作为 Sec-Browsing-Topics 标头与关联请求一起发送。

HTMLIFrameElement.browsingTopics

一个布尔属性,指定当前用户的选定主题应与关联 <iframe> 的源请求一起发送。这反映了 browsingtopics 内容属性的值。

HTML 元素

<iframe>browsingtopics 属性

一个布尔属性,如果存在,则指定当前用户的选定主题应与 <iframe> 的源请求一起发送。

HTTP 标头

Sec-Browsing-Topics

将当前用户的选定主题与请求一起发送,广告技术平台使用这些主题来选择要展示的个性化广告。

Observe-Browsing-Topics

用于将从调用网站的 URL(即嵌入广告技术 <iframe> 的网站)推断出的兴趣主题标记为在对由启用 Topics API 的功能生成的请求的响应中已观察到。浏览器随后将使用这些主题来计算当前用户在未来周期的热门主题。

Permissions-Policybrowsing-topics 指令

控制对 Topics API 的访问。如果策略明确禁止使用 Topics API,则任何调用 Document.browsingTopics() 方法或发送带有 Sec-Browsing-Topics 标头的请求的尝试都将以 NotAllowedError DOMException 失败。

注册

要在您的网站上使用 Topics API,您必须在 隐私沙盒注册流程 中指定它。如果您不这样做,以下子功能将无法正常工作:

  • Document.browsingTopics() 方法返回的 Promise 将以 NotAllowedError DOMException 拒绝。
  • 创建或修改 Sec-Browsing-Topics 标头将静默失败,并且任何现有的 Sec-Browsing-Topics 标头都将被删除。

示例

有关代码示例,请参阅 使用 Topics API

规范

此功能不是官方标准的一部分,尽管它在Topics API 非官方提案草案中有所说明。

标准立场

两个浏览器供应商反对此规范。已知的标准立场如下:

浏览器兼容性

另见