Attribution-Reporting-Register-Source 头

可用性有限

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

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

HTTP Attribution-Reporting-Register-Source 响应头将页面功能注册为归因来源。此头作为对包含 Attribution-Reporting-Eligible 头的请求的响应的一部分。它提供了当用户与归因来源交互时浏览器应存储的信息。您在此头中包含的信息还决定了浏览器可以生成的报告类型。

有关更多详细信息,请参阅 归因报告 API

注意:如果调用站点未在成功的隐私沙盒注册过程中包含归因报告 API,则 Attribution-Reporting-Register-Source 头将被忽略,并且不会注册归因来源。

头类型 响应头
禁止请求头
CORS-safelisted 响应头

语法

http
Attribution-Reporting-Register-Source: <json-string>

指令

<json-string>

一个 JSON 字符串,提供当归因来源被交互时浏览器应存储的信息。可用字段如下:

"source_event_id" 可选

一个表示归因来源 ID 的字符串,当与归因来源交互时,该 ID 可用于将其映射到其他信息,或在报告端点聚合信息。该字符串必须仅由一个基数为 10 格式的 64 位无符号整数组成。

"destination"

单个字符串或 1-3 个字符串的数组。这些字符串必须包含完整的 URL,对应于预期会发生触发事件的站点(方案 + eTLD+1)。当触发事件被交互时,它们用于将归因触发事件与来源匹配。

"aggregation_keys" 可选

一个对象,包含用户提供的键,表示要在其下聚合报告值的不同数据点。

"aggregatable_report_window" 可选

一个字符串,表示一个时间(以秒为单位),在该时间之后,触发数据将不再包含在生成的聚合报告中(这称为报告窗口)。如果未设置,则默认为 "expiry" 值。

"debug_key" 可选

一个基数为 10 格式的 64 位无符号整数,表示一个调试键。如果您想在关联的归因报告旁边生成调试报告,请设置此项。

"debug_reporting" 可选

一个布尔值。如果设置了 debug_key,请将其设置为 true 以指定生成的调试报告应为详细调试报告。

"event_level_epsilon" 可选

一个大于或等于 0 的数字,用于控制添加到报告中的噪声量。较小的 epsilon 值会导致更多的噪声,从而提供更大的隐私保护。最大值和默认值因实现而异;例如,Chrome 的最大值和默认值为 14

"event_report_window" 可选

一个字符串,表示一个时间(以秒为单位),在该时间之后,后续触发事件将不再归因于此来源,以便生成事件级报告(这称为报告窗口)。如果未设置,则事件报告窗口将回退到 "expiry" 值。

注意:如果指定了 "event_report_window",则不能指定 "event_report_windows",否则来源注册将失败。

"event_report_windows" 可选

一个对象,表示一系列报告窗口,从 "start_time" 开始,此来源的报告在 "end_times" 中指定的每个结束时间之后交付。这可用于改变多个报告的报告交付时间。如果未设置,则事件报告窗口将回退到 "expiry" 值。属性如下:

  • "start_time" 可选:一个非负数,指定报告窗口的开始时间。如果未指定,则默认为 0
  • "end_times":一个正数数组,指定后续报告窗口的结束时间。这些值必须递增,并且大于 "start_time"

    注意:如果指定了 "event_report_windows",则不能指定 "event_report_window",否则来源注册将失败。

"expiry" 可选

一个字符串,表示归因来源的到期时间(以秒为单位),在此时间之后它将不再处于活动状态(即,后续触发事件将不再归因于此来源)。允许的最大到期时间是 2592000 秒(30 天),这也是未明确设置 "expiry" 时的默认值。

"filter_data" 可选

一个对象,定义可用于过滤哪些转换生成报告的自定义数据。有关更多详细信息,请参阅过滤器

"max_event_level_reports" 可选

一个介于 020 之间(含)的数字,指定此来源可以生成的事件级报告总数。达到此最大值后,该来源将无法再生成任何新数据。如果未指定,导航型来源的 "max_event_level_reports" 默认为 3,事件型(基于图像或脚本)来源默认为 1

"priority" 可选

一个字符串,表示归因来源的优先级值。默认情况下,转换归因于最近匹配的来源。对于事件级和摘要报告,您可以设置更高的优先级数字来优先处理特定来源。例如,值 2 优先于默认值 1。有关更多信息,请参阅报告优先级和限制

"trigger_data" 可选

一个 32 位无符号整数数组,表示描述可能与此来源匹配的不同触发事件的数据。例如,“用户将商品添加到购物车”或“用户订阅邮件列表”可能是触发站点上发生的动作,这些动作可能与此来源匹配,并指示广告商试图衡量某种类型的转换。对于事件级归因发生,这些必须与触发器中指定的 "trigger_data" 进行匹配。如果省略,导航型来源的 "trigger_data" 默认为 [0, 1, 2, 3, 4, 5, 6, 7],事件型(基于图像或脚本)来源默认为 [0, 1]

注意:用于表示每个事件的值以及数组中元素的数量完全是任意的,由您作为开发者定义。数组可能包含未使用的值,但必须在数组中存在值,以便浏览器在注册触发器时将其归因于来源。

"trigger_data_matching" 可选

一个字符串,指定触发器中的 "trigger_data" 如何与来源的 "trigger_data" 匹配。可能的值有:

  • "exact":触发器中的 "trigger_data" 必须与来源的 "trigger_data" 中包含的值完全匹配;如果没有这样的匹配,则不会发生事件级归因。
  • "modulus":在这种情况下,执行以下计算 — d % allowedValues.size — 其中 d 是触发器中的 "trigger_data"allowedValues 是来源的 "trigger_data" 数组中的值序列。如果此计算结果与来源的 "trigger_data" 数组中的值匹配,则匹配成功。在这种情况下,值将始终匹配,除非 allowedValues 为空。

"modulus" 模式主要用于与 API 在引入 "exact" 之前的行为进行向后兼容,因此您不太可能使用它。它在需要非常特定类型的压缩从而导致更小的注册头的情况下仍然有用。当使用复杂的过滤逻辑,需要根据来源类型根据来源 "trigger_data" 项目的最大数量设置不同的触发器数据时,可能需要这样做。

注意:如果使用 "modulus",则来源的 "trigger_data" 必须形成从 0 开始的连续整数序列。如果触发器数据不形成这样的序列,则会发生错误。

如果未指定,"trigger_data_matching" 默认为 "modulus"。同样,这是为了向后兼容:省略 "trigger_data_matching" 字段需要产生与引入此字段之前观察到的相同行为。

示例

为事件级报告注册来源

当触发器与来源匹配时,Node.js 服务器可能会如下设置 Attribution-Reporting-Register-Source 响应头,以使浏览器生成事件级报告:

js
res.set(
  "Attribution-Reporting-Register-Source",
  JSON.stringify({
    source_event_id: "412444888111012",
    destination: "https://shop.example",
    trigger_data: [0, 1, 2, 3, 4],
    trigger_data_matching: "exact",
    expiry: "604800",
    priority: "100",
    debug_key: "122939999",
    event_report_window: "86400",
  }),
);

为摘要报告注册来源

要使浏览器在触发器与来源匹配时生成摘要报告,除了事件级报告生成所需的字段之外,您还需要包含一些额外的字段。

js
res.set(
  "Attribution-Reporting-Register-Source",
  JSON.stringify({
    source_event_id: "412444888111012",
    destination: "https://shop.example",
    trigger_data: [0, 1, 2, 3, 4],
    trigger_data_matching: "exact",
    expiry: "604800",
    priority: "100",
    debug_key: "122939999",
    event_report_window: "86400",

    aggregation_keys: {
      campaignCounts: "0x159",
      geoValue: "0x5",
    },
    aggregatable_report_window: "86400",
  }),
);

规范

规范
归因报告
# parse-source-registration-json

浏览器兼容性

另见