[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.jsIncomingMessage。- ExpressやFastifyなど、
node:http上に構築されたフレームワークからのリクエストオブジェクト。 - 多くのサーバーサイド JavaScript ランタイムとフレームワークがリクエストハンドラーに渡すFetch API
Request。 その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では、データストリームで有効になっている場合に、位置情報やデバイス検索などの機能にこれらのヘッダーが使用されます。 サーバーがプロキシまたはロードバランサーの背後で実行されている場合は、訪問者の実際の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 オブジェクトに追加します。