diff --git a/tracker/tracker/CHANGELOG.md b/tracker/tracker/CHANGELOG.md index 5fdf39f7e..d76b100ba 100644 --- a/tracker/tracker/CHANGELOG.md +++ b/tracker/tracker/CHANGELOG.md @@ -1,3 +1,7 @@ +# 7.0.2 + +- fixed header sanitization for axios causing empty string in some cases + # 7.0.1 - fix time inputs capturing diff --git a/tracker/tracker/src/main/modules/network.ts b/tracker/tracker/src/main/modules/network.ts index 35ad2d0c8..9827db1e3 100644 --- a/tracker/tracker/src/main/modules/network.ts +++ b/tracker/tracker/src/main/modules/network.ts @@ -259,17 +259,16 @@ export default function (app: App, opts: Partial = {}) { const { headers: reqHs, body: reqBody } = getXHRRequestDataObject(xhr) const duration = startTime > 0 ? e.timeStamp - startTime : 0 - const hString: string | null = ignoreHeaders ? '' : xhr.getAllResponseHeaders() // might be null (though only if no response received though) - const resHs = hString - ? hString - .split('\r\n') - .map((h) => h.split(':')) - .filter((entry) => !isHIgnored(entry[0])) - .reduce( - (hds, [name, value]) => ({ ...hds, [name]: value }), - {} as Record, - ) - : {} + const hString: string | null = xhr.getAllResponseHeaders() // might be null (though only if no response received though) + const headersArr = hString.trim().split(/[\r\n]+/) + const headerMap: Record = {} + headersArr.forEach(function (line) { + const parts = line.split(': ') + const header = parts.shift() as unknown as string + if (!isHIgnored(header)) { + headerMap[header] = parts.join(': ') + } + }) const method = strMethod(initMethod) const reqResInfo = sanitize({ @@ -281,7 +280,7 @@ export default function (app: App, opts: Partial = {}) { body: reqBody, }, response: { - headers: resHs, + headers: headerMap, body: xhr.response, }, })