[Alpha]{class="badge informative"}
En-têtes contextuels et transférés
Dans un navigateur, le SDK Web lit l’URL de la page, la taille de l’écran, le fuseau horaire et d’autres détails de la page et les ajoute à chaque événement. Un serveur ne disposant pas de page à lire, Server SDK ajoute un plus petit ensemble de données contextuelles. Il transfère également les détails de la demande du visiteur afin que l’Edge Network puisse les utiliser.
Détails d’implémentation implementation-details
Le SDK ajoute l’objet xdm.implementationDetails à chaque événement. Cet objet identifie la bibliothèque qui a envoyé l’événement :
{
"implementationDetails": {
"name": "https://ns.adobe.com/experience/alloy-node",
"version": "0.2.1",
"environment": "server"
}
}
La valeur version correspond à la version installée du package @adobe/alloy-node. Impossible de désactiver ces données.
Transmettre la requête entrante request
Pour ajouter du contexte sur le visiteur, transmettez la requête entrante à forRequest en tant que propriété request :
const visitor = alloy.forRequest({ request: req });
La valeur request peut être n’importe quel objet ayant une propriété headers, notamment :
- Node.js
IncomingMessagedu modulenode:http. - Objet de requête provenant d’un framework créé sur
node:http, tel qu’Express ou Fastify. - Une
Requestd’API Fetch, que de nombreux runtimes et frameworks JavaScript côté serveur transmettent aux gestionnaires de requêtes. Sa propriétéheadersest un objetHeaders.
Si vous créez vous-même un objet brut, utilisez des noms d’en-tête en minuscules, tels que { headers: { "user-agent": "..." } }.
En-têtes transférés forwarded-headers
Lorsque vous transmettez un request, le SDK copie les en-têtes suivants à partir de celui-ci vers chaque requête qu’il envoie à Edge Network. Sans ces en-têtes, Edge Network verrait votre serveur comme le visiteur et ses recherches d’appareil et d’emplacement décriraient votre serveur plutôt que le visiteur.
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-IPLe SDK ne transfère que les en-têtes de ce tableau. Il ne transfère jamais les en-têtes Cookie, Authorization ou Referer du visiteur.
Edge Network utilise ces en-têtes pour des fonctionnalités telles que géolocalisation et recherche d’appareil, lorsqu’elles sont activées sur votre flux de données. Si votre serveur s’exécute derrière un proxy ou une répartition de charge, assurez-vous qu’il définit X-Forwarded-For ou Forwarded sur l’adresse IP réelle du visiteur.
Par défaut, les navigateurs envoient uniquement quelques indications du client à faible entropie. Pour recevoir les autres, votre serveur doit les demander au navigateur avec l’en-tête de réponse Accept-CH.
URL de la page à partir de l’en-tête Référent page-url
Si la requête entrante comporte un en-tête Referer, le SDK utilise sa valeur comme xdm.web.webPageDetails.URL. L’en-tête Referer contient l’adresse de la page qui a émis la requête. Elle n’est donc exacte que dans certains cas :
- Le navigateur appelle votre serveur à partir d’une page par exemple avec
fetch:Referercontient l’URL de cette page, qui est généralement la valeur souhaitée. - Le navigateur accède à une page dont le rendu est effectué par votre serveur :
Referercontient la page précédente, et non pas la page que le visiteur consulte actuellement. Définissez l’URL de la page vous-même à la place. - La requête traverse plusieurs origines : les navigateurs ajustent généralement le
Refererà l’origine, par exemplehttps://www.example.com/, en fonction de l’Referrer-Policyde la page.
Les valeurs que vous définissez dans l’objet xdm ont la priorité sur la valeur Referer. Pour définir explicitement l’URL de la page :
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 }]
}
}
});
Données que le SDK ne collecte pas not-collected
Les données suivantes que Web SDK peut collecter dans un navigateur ne possèdent pas de source fiable sur un serveur. Par conséquent, Server SDK ne les ajoute pas :
- Titre de la page, page de référence et orientation de l’écran
- Taille d’écran, taille de fenêtre d’affichage et position de défilement
- Heure locale et fuseau horaire
- Le client user-agent à entropie élevée indique que le navigateur n’a pas envoyé la requête
Si votre application connaît l’une de ces valeurs, par exemple parce que le navigateur les a envoyées à votre serveur, ajoutez-les vous-même à l’objet xdm .