diff --git a/packages/opentelemetry-plugin-http/src/http.ts b/packages/opentelemetry-plugin-http/src/http.ts index 3697ba492ce..481970e4eaf 100644 --- a/packages/opentelemetry-plugin-http/src/http.ts +++ b/packages/opentelemetry-plugin-http/src/http.ts @@ -406,6 +406,8 @@ export class HttpPlugin extends BasePlugin { ); if (utils.isOpenTelemetryRequest(optionsParsed)) { + // clone the headers so delete will not modify the user's object + optionsParsed.headers = Object.assign({}, optionsParsed.headers); delete optionsParsed.headers[utils.OT_REQUEST_HEADER]; return original.apply(this, [optionsParsed, ...args]); } diff --git a/packages/opentelemetry-plugin-http/test/functionals/http-enable.test.ts b/packages/opentelemetry-plugin-http/test/functionals/http-enable.test.ts index 51400d239cf..812194e4230 100644 --- a/packages/opentelemetry-plugin-http/test/functionals/http-enable.test.ts +++ b/packages/opentelemetry-plugin-http/test/functionals/http-enable.test.ts @@ -202,6 +202,7 @@ describe('HttpPlugin', () => { const spans = memoryExporter.getFinishedSpans(); assert.strictEqual(result.data, 'Ok'); assert.strictEqual(spans.length, 0); + assert.strictEqual(options.headers[OT_REQUEST_HEADER], 1); }); }); describe('with good plugin options', () => {