Skip to content

Commit 5206c77

Browse files
author
Luca Forstner
committed
Remove old ones and append new sentry baggage values
1 parent d86cca9 commit 5206c77

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

packages/core/src/fetch.ts

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
import type { Client, HandlerDataFetch, Scope, Span, SpanOrigin } from '@sentry/types';
22
import {
33
BAGGAGE_HEADER_NAME,
4+
SENTRY_BAGGAGE_KEY_PREFIX,
5+
SENTRY_BAGGAGE_KEY_PREFIX_REGEX,
46
dynamicSamplingContextToSentryBaggageHeader,
57
generateSentryTraceHeader,
68
isInstanceOf,
9+
parseBaggageHeader,
710
parseUrl,
811
} from '@sentry/utils';
912
import { getClient, getCurrentScope, getIsolationScope } from './currentScopes';
@@ -156,9 +159,23 @@ export function addTracingHeadersToFetchRequest(
156159
newHeaders.set('sentry-trace', sentryTraceHeader);
157160

158161
if (sentryBaggageHeader) {
159-
// If the same header is appended multiple times the browser will merge the values into a single request header.
160-
// Its therefore safe to simply push a "baggage" entry, even though there might already be another baggage header.
161-
newHeaders.append(BAGGAGE_HEADER_NAME, sentryBaggageHeader);
162+
const prevBaggageHeader = newHeaders.get(BAGGAGE_HEADER_NAME);
163+
if (prevBaggageHeader) {
164+
const prevHeaderStrippedFromSentryBaggage = sentryBaggageHeader
165+
.split(',')
166+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
167+
.filter(baggageEntry => !baggageEntry.split('=')[0]!.startsWith(SENTRY_BAGGAGE_KEY_PREFIX))
168+
.join(',');
169+
170+
const mergedHeaders = [sentryBaggageHeader];
171+
if (prevHeaderStrippedFromSentryBaggage) {
172+
mergedHeaders.unshift(prevHeaderStrippedFromSentryBaggage);
173+
}
174+
175+
newHeaders.set(BAGGAGE_HEADER_NAME, mergedHeaders.join(','));
176+
} else {
177+
newHeaders.set(BAGGAGE_HEADER_NAME, sentryBaggageHeader);
178+
}
162179
}
163180

164181
return newHeaders as PolymorphicRequestHeaders;

0 commit comments

Comments
 (0)