了解如何使用权限政策控制受众群体管理,或通过配置 .well-known 权限网址委托给第三方。
joinAdInterestGroup() 的调用方上下文的来源必须与兴趣群体所有者的来源一致,因此除非兴趣群体所有者的来源与当前文档的来源一致(例如,某个网站拥有自己的兴趣群体),否则需要从 iframe(例如,从 DSP)调用 joinAdInterestGroup()。
joinAdInterestGroup() 需要获得以下方面的许可:
- 正在访问的网站
- 兴趣群组所有者
这意味着,在 dsp.example.com 未授予权限的情况下,malicious.example 无法为 dsp.example.com 拥有的兴趣群体调用 joinAdInterestGroup()。
所访问网站的权限
权限可以从同源或跨源授予。
默认情况下,系统会授予对来自所访问网站的同一来源(换句话说,来自当前网页的顶层框架的同一来源)的 joinAdInterestGroup() 调用的权限。网站可以使用 join-ad-interest-group 权限政策标头来停用 joinAdInterestGroup() 调用。
跨源(与当前网页不同的来源)调用 joinAdInterestGroup() 只有在所访问的网站设置了允许从跨源 iframe 调用 joinAdInterestGroup() 的权限政策时才能成功。
获得兴趣群体所有者的许可
通过从与兴趣组所有者具有相同来源的 iframe 调用 joinAdInterestGroup(),可以隐式授予兴趣组所有者权限。例如,dsp.example.com iframe 可以针对 dsp.example.com 拥有的兴趣群体调用 joinAdInterestGroup()。
从本质上讲,joinAdInterestGroup() 可以在所有者的网域中的网页或 iframe 中运行,也可以委托给使用 .well-known 网址中的列表提供的其他网域。
当已导航到某个网域的框架针对具有不同所有者的兴趣群体调用 joinAdInterestGroup()、leaveAdInterestGroup() 或 clearOriginJoinedAdInterestGroups() 时,浏览器将提取网址 https://owner.domain/.well-known/interest-group/permissions/?origin=frame.origin,其中 owner.domain 是拥有相应兴趣群体的网域,而 frame.origin 是相应框架的来源。提取使用省略凭据模式,使用调用该方法的框架的网络分区键。为避免通过返回的 Promise 意外泄露跨源数据,fetch 使用 cors 模式。提取的响应应具有 JSON MIME 类型,并且采用以下格式:
{ "joinAdInterestGroup": true/false,
"leaveAdInterestGroup": true/false
}
指示路径中的来源是否有权加入或离开请求所发送到的网域所拥有的兴趣群组。缺少的权限会被假定为 false。由于使用 0 的 lifetimeMs 调用 navigator.joinAdInterestGroup() 会有效地离开兴趣群体,因此 joinAdInterestGroup: true 还允许来源调用 navigator.leaveAdInterestGroup(),即使缺少 leaveadInterestGroup 或 leaveadInterestGroup 设置为 false 也是如此。请注意,leaveAdInterestGroup() 和 clearOriginJoinedAdInterestGroups() 都会检查 leaveAdInterestGroup 权限。