[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

訪問者に関するコンテキストを追加するには、受信リクエストをforRequestにrequest プロパティとして渡します。

const visitor = alloy.forRequest({ request: req });

request値は、次を含むheaders プロパティを持つ任意のオブジェクトにできます。

  • node:http モジュールのNode.js IncomingMessage。
  • ExpressやFastifyなど、node:http上に構築されたフレームワークからのリクエストオブジェクト。
  • 多くのサーバーサイド JavaScript ランタイムとフレームワークがリクエストハンドラーに渡すFetch API Request。 そのheaders プロパティはHeaders オブジェクトです。

プレーンオブジェクトを自分で作成する場合は、{ headers: { "user-agent": "..." } }などの小文字のヘッダー名を使用します。

転送されたヘッダー forwarded-headers

requestを渡すと、SDKは、次のヘッダーをそのヘッダーからEdge Networkに送信する各リクエストにコピーします。 これらのヘッダーがなければ、Edge Networkはサーバーを訪問者として見なし、デバイスと場所の検索は訪問者ではなくサーバーを表します。

ヘッダー
目的
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
User-Agent クライアントヒント:訪問者のブラウザーとデバイスをより詳細に説明します。 User-agent クライアントヒント ​を参照してください。
X-Forwarded-For, Forwarded, X-Real-IP
プロキシまたはロードバランサーがサーバーの前にあるときに、訪問者のIP アドレスを特定します。

SDKは、このテーブルのヘッダーのみを転送します。 訪問者のCookie、Authorization、Refererのヘッダーは転送されません。

Edge Networkでは、データストリームで有効になっている場合に、位置情報やデバイス検索などの機能にこれらのヘッダーが使用されます。 サーバーがプロキシまたはロードバランサーの背後で実行されている場合は、訪問者の実際のIP アドレスにX-Forwarded-ForまたはForwardedが設定されていることを確認します。

ブラウザーは、デフォルトでは、低エントロピーのクライアントヒントをいくつか送信するだけです。 その他の応答を受け取るには、サーバーがブラウザーに対してAccept-CH応答ヘッダーを付けて要求する必要があります。

参照元ヘッダーのページ URL page-url

受信リクエストにReferer ヘッダーがある場合、SDKはその値をxdm.web.webPageDetails.URLとして使用します。 Referer ヘッダーには、リクエストを行ったページのアドレスが含まれているため、次の場合にのみ正確です。

  • ブラウザーはページ​からサーバーを呼び出します。例えば、fetch: Refererには、そのページのURLが含まれています。これは通常、必要な値です。
  • ブラウザーは、サーバーがレンダリングするページに移動します: Refererには、訪問者が現在表示しているページではなく、前の ページが含まれています。 代わりに、自分でページ 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は追加しません。

  • ページタイトル、参照ページ、画面方向
  • 画面サイズ、ビューポートサイズ、スクロール位置
  • 現地時間とタイムゾーン
  • 高エントロピーのuser-agent クライアントは、ブラウザーがリクエストを送信しなかったことを示します

ブラウザーがサーバーに送信した場合など、アプリケーションがこれらの値を認識している場合は、自分でxdm オブジェクトに追加します。

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