[Alpha]{class="badge informative"}
上下文和转发的标头
在浏览器中,Web SDK从页面读取页面URL、屏幕大小、时区和其他详细信息,并将它们添加到每个事件。 服务器没有要读取的页面,因此Server SDK添加了一组较小的上下文数据。 它会转发来自访客请求的详细信息,以便Edge Network可以使用这些信息。
实施详细信息 implementation-details
SDK将xdm.implementationDetails对象添加到每个事件。 此对象标识发送事件的库:
{
"implementationDetails": {
"name": "https://ns.adobe.com/experience/alloy-node",
"version": "0.2.1",
"environment": "server"
}
}
version值与已安装的@adobe/alloy-node包版本匹配。 您无法关闭此数据。
传递传入请求 request
要添加有关访客的上下文,请将传入请求作为request属性传递给forRequest:
const visitor = alloy.forRequest({ request: req });
request值可以是具有headers属性的任何对象,包括:
node:http模块中的Node.jsIncomingMessage。- 基于
node:http构建的框架中的请求对象,如Express或Fastify。 - 获取API
Request,许多服务器端JavaScript运行时间和框架都将其传递给请求处理程序。 其headers属性是Headers对象。
如果您自己生成一个纯对象,请使用小写标头名称,如{ headers: { "user-agent": "..." } }。
转发的标头 forwarded-headers
当您传递request时,SDK会将以下标头从其中复制到它发送到Edge Network的每个请求中。 如果没有这些标头,Edge Network会将您的服务器视为访客,其设备和位置查找将描述您的服务器而非访客。
User-AgentAccept-LanguageSec-CH-UA, Sec-CH-UA-Mobile, Sec-CH-UA-Platform, Sec-CH-UA-Platform-Version, Sec-CH-UA-Arch, Sec-CH-UA-Bitness, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Model, Sec-CH-UA-WoW64X-Forwarded-For, Forwarded, X-Real-IPSDK仅转发此表中的标头。 它从不转发访客的Cookie、Authorization或Referer标头。
当在数据流上启用地理位置和设备查找等功能时,Edge Network会使用这些标头。 如果您的服务器在代理或负载平衡器后运行,请确保它将X-Forwarded-For或Forwarded设置为访客的实际IP地址。
默认情况下,浏览器仅发送几个低熵客户端提示。 要接收其他人,您的服务器必须使用Accept-CH响应标头向浏览器请求这些人。
引用标头中的页面URL page-url
如果传入请求具有Referer标头,则SDK使用其值为xdm.web.webPageDetails.URL。 Referer标头包含发出请求的页面的地址,因此它仅在以下情况下准确:
- 浏览器从页面调用您的服务器,例如
fetch:Referer包含该页面的URL,它通常是您想要的值。 - 浏览器导航到您的服务器渲染的页面:
Referer包含 previous 页面,而不是访客正在查看的页面。 请自行设置页面URL。 - 请求跨源:浏览器通常根据页面的
Referrer-Policy将Referer裁切到源,如https://www.example.com/。
您在xdm对象中设置的值优先于Referer值。 要显式设置页面URL,请执行以下操作:
await visitor.sendEvent({
xdm: {
eventType: "web.webpagedetails.pageViews",
web: {
webPageDetails: {
URL: `https://www.example.com${req.url}`
}
},
identityMap: {
Email: [{ id: "visitor@example.com", primary: true }]
}
}
});
SDK未收集的数据 not-collected
Web SDK可在浏览器中收集的以下数据在服务器上没有可靠来源,因此服务器SDK不会添加该数据:
- 页面标题、引荐页面和屏幕方向
- 屏幕大小、视区大小和滚动位置
- 本地时间和时区
- 高熵用户代理客户端提示浏览器未在请求中发送
如果您的应用程序知道其中的任何值(例如,由于浏览器将这些值发送到您的服务器),请自行将它们添加到xdm对象。