本页介绍了Server SDK setConsent方法。 对于Web SDK,请参阅setConsent.
setConsent方法告知服务器SDK是否可以发送访客数据(选择启用)或必须放弃该数据(选择禁用)。 SDK将访客的首选项发送到Edge Network,然后通过您传递到forRequest的Cookie服务将结果存储在kndctr_<orgId>_consent Cookie中。
SDK支持以下同意标准:
- Adobe standard:版本1.0和2.0。
- IAB透明度和同意框架(TCF):版本2.0。
仅当实例包含Consent组件(默认情况下包括createInstance)时,此方法才可用。
为访客调用setConsent call
同意属于单个访客,因此始终在该访客的forRequest句柄上调用setConsent,而不是在顶级实例上调用。 以下示例使用Adobe 2.0标准:
const visitor = alloy.forRequest({ request: req, cookie: visitorCookies });
await visitor.setConsent({
consent: [{
standard: "Adobe",
version: "2.0",
value: {
collect: { val: "y" }
}
}]
});
以下示例使用Adobe 1.0标准:
await visitor.setConsent({
consent: [{
standard: "Adobe",
version: "1.0",
value: { general: "in" }
}]
});
以下示例使用IAB TCF 2.0标准:
await visitor.setConsent({
consent: [{
standard: "IAB TCF",
version: "2.0",
value: "CO052l-O052l-DGAMBFRACBgAIBAAAAAAIYgEawAQEagAAAA",
gdprApplies: true
}]
});
如果您使用IAB TCF标准并且希望获得访客配置文件上的同意数据,则还应在事件xdm对象中包含IAB同意信息。 SDK不会自动将其添加到事件。
如何记住同意 stored-consent
SDK通过您传递给forRequest的cookie服务读取和写入同意Cookie:
- 如果您的Cookie服务读取访客的浏览器Cookie,则之前在服务器上或具有Web SDK的浏览器中记录的访客同意已经适用。 在访客首选项更改之前,您无需再次调用
setConsent。 - 如果您没有传递Cookie服务,SDK将忘记请求之间的同意。 每个请求都从
defaultConsent开始。
如果已经为访客发送了相同的偏好设置,SDK会跳过请求。 它会跟踪通过storage服务发送的首选项,因此只有将该访客的storage服务传递到forRequest时,此检查才会在请求间运行。 否则,每个调用都会向Edge Network发送请求,即使访客的首选项未发生更改也是如此。 当访客做出同意选择或更改同意选择时调用setConsent,而不是在每个请求时调用。
请求未经过身份验证。 确保您的数据流接受未经身份验证的请求。 请参阅设置数据流访问类型。
选项 options
setConsent方法接受具有以下属性的对象:
consent:必需。 同意对象的数组,每个对象均采用一种受支持的标准。identityMap:访客的标识映射。 Edge Network在设备级别应用同意,因此它仅使用此映射中的ECID。edgeConfigOverrides:此请求的数据流配置覆盖对象。
结果对象 result
当Edge Network接受同意首选项时,setConsent方法返回使用空对象解析的promise。