Options réseau (Web)
Cette page décrit l’espace de noms network des options du SDK JavaScript d’OpenReplay. Il concerne la capture des requêtes réseau telles que fetch et XHR, y compris les charges utiles si nécessaire, et leur inspection ultérieure lors de la relecture des enregistrements de sessions. Ceci est très utile pour comprendre et résoudre les problèmes.
Options
Section titled Optionsnetwork?: {
failuresOnly: boolean;
sessionTokenHeader: string | boolean;
ignoreHeaders: Array<string> | boolean;
capturePayload: boolean;
sanitizer: (RequestResponseData) => RequestResponseData | null;
captureInIframes: boolean;
axiosInstances: AxiosInstance[];
useProxy?: boolean;
tokenUrlMatcher?: (url: string) => boolean;
}
useProxy: Fait passer le tracker du patch de window.fetch/window.XMLRequest à l’utilisation d’objets proxy. Par défaut :true.failuresOnly: Capture les requêtes ayant un code de statut HTTP 4xx-5xx. Par défaut :false.sessionTokenHeader: Au cas où vous auriez activé certaines de nos intégrations backend (par exemple Sentry), vous pouvez utiliser cette option pour spécifier le nom de l’en-tête (ou activer celui par défaut ‘X-OpenReplay-SessionToken’ en définissant l’option surtrue). Ce dernier est ajouté automatiquement à chaque requête fetch/XHR pour contenir la valeur du sessionToken d’OpenReplay. Par défaut :false.tokenUrlMatcher: Récupère l’url de la requête actuelle du tracker et renvoie unboolean. S’il est présent,sessionTokenHeaderne sera appliqué que lorsque cette fonction renvoietrue. Par défaut :undefined.ignoreHeaders: Aide à définir une liste d’en-têtes que vous ne souhaitez pas capturer. Définissez sa valeur surfalsepour tous les capturer (truepour n’en capturer aucun). Par défaut :['Cookie', 'Set-Cookie', 'Authorization']afin que les en-têtes sensibles ne soient pas capturés.capturePayload: Stocke les charges utiles du corps des requêtes/réponses. Cela peut être très utile à des fins de dépannage, mais peut alourdir l’utilisation du réseau si votre application utilise abondamment les requêtes Fetch/XHR. Par défaut :false.
captureInIframes: Pour désactiver le suivi réseau à l’intérieur des iFrames. Par défaut :true.axiosInstances: Utile dans des situations spécifiques pour suivre des instances axios personnalisées, si la configuration habituelle (api proxy) ne fonctionne pas. Par défaut :undefined.sanitizer: Assainit les données sensibles de la requête/réponse Fetch/XHR ou ignore complètement la requête. Vous pouvez masquer des champs sur l’objet de la requête en le modifiant puis en le renvoyant depuis la fonction (voir les exemples ci-dessous). L’assainissement est appliqué après tout le filtrage et les modifications induits par les autres options (c’est-à-dire que l’argument ne contiendra pas la charge utilebodysicapturePayloadn’a pas été explicitement défini surtrue).
interface RequestData {
body: BodyInit | null | undefined; // whatewer you've put in the init.body in fetch(url, init) or xhr.send(body)
headers: Record<string, string>;
}
interface ResponseData {
body: string | Object | null; // Object if response is of JSON type
headers: Record<string, string>;
}
interface RequestResponseData {
readonly status: number;
readonly method: string;
url: string;
request: RequestData;
response: ResponseData;
}
sanitizer: (data: RequestResponseData) => { // sanitise the body or headers
if (data.url === "/auth") {
data.request.body = null
}
if (data.request.headers['x-auth-token']) { // can also use ignoreHeaders option instead
data.request.headers['x-auth-token'] = 'SANITISED';
}
// Sanitize response
if (data.status < 400 && data.response.body.token) {
data.response.body.token = "<TOKEN>"
}
return data
}
// OR
sanitizer: data => { // ignore requests that start with /secure
if (data.url.startsWith("/secure")) {
return null
}
return data
}
// OR
sanitizer: data => { // sanitize request url: replace all numbers
data.url = data.url.replace(/\d/g, "*")
return data
}
Exemples
Section titled ExemplesVous trouverez ci-dessous des exemples d’utilisation de l’option network.
Avec NPM
Section titled Avec NPMconst tracker = new OpenReplay({
projectKey: PROJECT_KEY,
network: {
capturePayload: true // Capture HTTP payload
}
});
Avec le snippet JavaScript
Section titled Avec le snippet JavaScriptNotez la variable/ligne initOpts pour définir l’option network.
<!-- OpenReplay Tracking Code -->
<script>
var initOpts = {
projectKey: "GxPpaDARdn2345fgt321",
network: { // Enable HTTP payload capture in the network option
capturePayload: true
}
};
(function(A,s,a,y,e,r){
r=window.OpenReplay=[e,r,y,[s-1, e]];
s=document.createElement('script');s.src=A;s.async=!a;
...
})("//static.openreplay.com/latest/openreplay.js", 1, 0, initOpts, startOpts);
</script>
Dépannage
Section titled DépannageVous rencontrez des difficultés pour configurer ces options ? Rejoignez notre Slack ou consultez notre Forum et obtenez de l’aide de notre communauté.