Opciones de Red
Esta página describe el espacio de nombres network de las opciones del SDK de JavaScript de OpenReplay. Se refiere a la captura de solicitudes de red como fetch y XHR, incluyendo los payloads si es necesario, e inspeccionarlas posteriormente mientras se reproducen las grabaciones de sesiones. Esto es muy útil para comprender y solucionar problemas.
Opciones
Section titled Opcionesnetwork?: {
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: Cambia el tracker de parchear window.fetch/window.XMLRequest a usar objetos proxy. Por defecto:true.failuresOnly: Captura las solicitudes que tienen un código de estado HTTP 4xx-5xx. Por defecto:false.sessionTokenHeader: En caso de que hayas habilitado alguna de nuestras integraciones de backend (es decir, Sentry), puedes usar esta opción para especificar el nombre del encabezado (o activar el predeterminado ‘X-OpenReplay-SessionToken’ estableciendo la opción entrue). Este último se añade automáticamente a cada solicitud fetch/XHR para contener el valor del sessionToken de OpenReplay. Por defecto:false.tokenUrlMatcher: Obtiene la url de la solicitud actual del tracker y devuelve unboolean. Si está presente,sessionTokenHeadersolo se aplicará cuando esta función devuelvatrue. Por defecto:undefined.ignoreHeaders: Ayuda a definir una lista de encabezados que no deseas capturar. Establece su valor enfalsepara capturarlos todos (truepara ninguno). Por defecto:['Cookie', 'Set-Cookie', 'Authorization']para que los encabezados sensibles no se capturen.capturePayload: Almacena los payloads del cuerpo de las solicitudes/respuestas. Esto puede ser muy útil para fines de resolución de problemas, pero puede volverse pesado en el uso de la red si tu aplicación utiliza ampliamente solicitudes Fetch/XHR. Por defecto:false.
captureInIframes: Para deshabilitar el seguimiento de red dentro de iFrames. Por defecto:true.axiosInstances: Útil en situaciones específicas para rastrear instancias personalizadas de axios, si la configuración habitual (proxy api) no funciona. Por defecto:undefined.sanitizer: Sanea los datos sensibles de las solicitudes/respuestas Fetch/XHR o ignora la solicitud por completo. Puedes redactar campos del objeto de solicitud modificándolo y luego devolviéndolo desde la función (consulta los ejemplos a continuación). El saneamiento se aplica después de todo el filtrado y las modificaciones inducidas por otras opciones (es decir, el argumento no contendrá el payloadbodysicapturePayloadno se estableció explícitamente entrue).
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 payloads for calls that start with /secure
if (data.url.startsWith("/secure")) {
data.request.body = null;
data.response.body = null;
}
return data
}
// OR
sanitizer: data => { // sanitize request url: replace all numbers
data.url = data.url.replace(/\d/g, "*")
return data
}
Ejemplos
Section titled EjemplosA continuación se muestran ejemplos sobre cómo usar la opción network.
Con NPM
Section titled Con NPMtracker.configure({
projectKey: PROJECT_KEY,
network: {
capturePayload: true // Capture HTTP payload
}
});
Con el snippet de JavaScript
Section titled Con el snippet de JavaScriptObserva la variable/línea initOpts para establecer la opción 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>
Resolución de problemas
Section titled Resolución de problemas¿Tienes problemas para configurar estas opciones? Conéctate a nuestro Slack o consulta nuestro Foro y obtén ayuda de nuestra comunidad.