[Alpha]{class="badge informative"}

上下文和轉送的標題

在瀏覽器中,Web SDK會從頁面讀取頁面URL、熒幕大小、時區和其他詳細資訊,並將其新增至每個事件。 伺服器沒有頁面可供讀取,因此伺服器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

若要新增訪客的相關內容,請將傳入的請求傳遞給forRequest,做為request屬性:

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
當Proxy或負載平衡器位於伺服器前面時,識別訪客的IP位址。

SDK只會轉送此表格中的標題。 它不會轉寄訪客的Cookie、Authorization或Referer標頭。

在您的資料流中啟用地理位置和裝置查詢等功能時,Edge Network會使用這些標頭。 如果您的伺服器在Proxy或負載平衡器之後執行,請確定它將X-Forwarded-For或Forwarded設定為訪客的實際IP位址。

瀏覽器預設只會傳送一些低平均資訊量使用者端提示。 若要接收其他專案,您的伺服器必須使用Accept-CH回應標頭向瀏覽器詢問這些專案。

來自Referer標頭的頁面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