[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.js IncomingMessage。
  • 基于node:http构建的框架中的请求对象,如Express或Fastify。
  • 获取API Request,许多服务器端JavaScript运行时间和框架都将其传递给请求处理程序。 其headers属性是Headers对象。

如果您自己生成一个纯对象,请使用小写标头名称,如{ headers: { "user-agent": "..." } }。

转发的标头 forwarded-headers

当您传递request时,SDK会将以下标头从其中复制到它发送到Edge Network的每个请求中。 如果没有这些标头,Edge Network会将您的服务器视为访客,其设备和位置查找将描述您的服务器而非访客。

Header
用途
User-Agent
标识访客的浏览器和设备。
Accept-Language
标识访客的首选语言。
Sec-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-WoW64
用户代理客户端提示,用于更详细地描述访客的浏览器和设备。 请参阅用户代理客户端提示。
X-Forwarded-For, Forwarded, X-Real-IP
当代理或负载平衡器位于服务器前面时,识别访客的IP地址。

SDK仅转发此表中的标头。 它从不转发访客的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对象。

recommendation-more-help
experience-platform-help-collection