了解如何通过使用权限政策来控制受众群体管理,或通过配置 .well-known 权限网址来委托给第三方。
joinAdInterestGroup()
的调用上下文的来源必须与兴趣群体所有者的来源一致,因此,除非兴趣群体所有者的来源与当前文档的来源(例如具有自己的兴趣群体的网站)一致,否则需要从 iframe(例如,从 DSP)调用 joinAdInterestGroup()
。
joinAdInterestGroup()
需要以下人员的权限:
- 所访问的网站
- 兴趣群体所有者
这意味着,如果没有 dsp.example.com
授予权限,malicious.example
将无法为 dsp.example.com
拥有的兴趣群体调用 joinAdInterestGroup()
。
所访问网站的权限
可以从同源或跨源授予权限。
默认情况下,从与所访问的网站同源(即,从与当前网页的顶级框架相同的源)发出的 joinAdInterestGroup()
调用授予权限。网站可以使用 join-ad-interest-group
权限政策标头来停用 joinAdInterestGroup()
调用。
只有当所访问的网站已设置允许从跨源 iframe 调用 joinAdInterestGroup()
的权限政策时,才能成功调用 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 意外泄露跨源数据,提取操作会使用 cors 模式。提取的响应应具有 JSON MIME 类型,并采用以下格式:
{ "joinAdInterestGroup": true/false,
"leaveAdInterestGroup": true/false
}
指明路径中的来源是否有权加入或退出该请求所发送到的网域所拥有的兴趣群体。缺少的权限会被假定为 false。由于使用 lifetimeMs
为 0 的调用 navigator.joinAdInterestGroup()
实际上会离开一个兴趣群体,因此 joinAdInterestGroup: true
还允许源调用 navigator.leaveAdInterestGroup()
,即使 leaveadInterestGroup
缺失或设置为 false 也是如此。请注意,leaveAdInterestGroup()
和 clearOriginJoinedAdInterestGroups()
都会检查 leaveAdInterestGroup
权限。