diff --git a/src/modules/session-recorder/SessionRecorder.ts b/src/modules/session-recorder/SessionRecorder.ts index 48e6db8..57a318a 100644 --- a/src/modules/session-recorder/SessionRecorder.ts +++ b/src/modules/session-recorder/SessionRecorder.ts @@ -34,6 +34,7 @@ export interface SessionRecorderOptions { maxPayloadSize?: number; // in Bytes localStorage?: boolean; sessionStorage?: boolean; + captureHeaders?: boolean; } export class SessionRecorder { @@ -192,21 +193,37 @@ export class SessionRecorder { Network.intercept( /.*/, - ({ method, url, requestData, responseJSON, responseURL, contentType, status, statusText, responseTime }) => { - captureEventFn( - this.#filterOutLargeNetworkValues({ - timestamp: Date.now(), - method, - url, - requestData, - response: responseJSON, - responseURL, - contentType, - status, - statusText, - responseTime, - }), - ); + ({ + method, + url, + requestData, + responseJSON, + responseURL, + contentType, + status, + statusText, + responseTime, + requestHeaders, + responseHeaders, + }) => { + const eventData: NetworkEventData = { + timestamp: Date.now(), + method, + url, + requestData, + response: responseJSON, + responseURL, + contentType, + status, + statusText, + responseTime, + }; + if (this.#options.captureHeaders) { + eventData.requestHeaders = requestHeaders; + eventData.responseHeaders = responseHeaders; + } + + captureEventFn(this.#filterOutLargeNetworkValues(eventData)); }, ); } diff --git a/src/modules/session-recorder/types.ts b/src/modules/session-recorder/types.ts index 8c98b7c..5af82bc 100644 --- a/src/modules/session-recorder/types.ts +++ b/src/modules/session-recorder/types.ts @@ -61,6 +61,8 @@ export type NetworkEventData = CommonEventData & { statusText?: string; responseTime?: number; errors?: RQNetworkEventErrorCodes[]; + requestHeaders?: Record; + responseHeaders?: Record; }; export interface RQSessionEventDataType {