|
1 | 1 | import { getCurrentHub } from '@sentry/hub';
|
| 2 | +import { TraceHeadersObj } from '@sentry/types'; |
2 | 3 | import { addInstrumentationHandler, isInstanceOf, isMatchingPattern } from '@sentry/utils';
|
3 | 4 |
|
4 | 5 | import { Span } from '../span';
|
@@ -195,14 +196,14 @@ export function fetchCallback(
|
195 | 196 | // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
196 | 197 | if (typeof headers.append === 'function') {
|
197 | 198 | // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
198 |
| - headers.append('sentry-trace', span.toTraceparent()); |
| 199 | + headers.append(...span.getTraceHeaders('array')); |
199 | 200 | } else if (Array.isArray(headers)) {
|
200 |
| - headers = [...headers, ['sentry-trace', span.toTraceparent()]]; |
| 201 | + headers = [...headers, ...span.getTraceHeaders('array')]; |
201 | 202 | } else {
|
202 |
| - headers = { ...headers, 'sentry-trace': span.toTraceparent() }; |
| 203 | + headers = { ...headers, ...span.getTraceHeaders('object') }; |
203 | 204 | }
|
204 | 205 | } else {
|
205 |
| - headers = { 'sentry-trace': span.toTraceparent() }; |
| 206 | + headers = span.getTraceHeaders('object'); |
206 | 207 | }
|
207 | 208 | options.headers = headers;
|
208 | 209 | }
|
@@ -261,7 +262,11 @@ export function xhrCallback(
|
261 | 262 |
|
262 | 263 | if (handlerData.xhr.setRequestHeader) {
|
263 | 264 | try {
|
264 |
| - handlerData.xhr.setRequestHeader('sentry-trace', span.toTraceparent()); |
| 265 | + const sentryHeaders = span.getTraceHeaders('object') as TraceHeadersObj; |
| 266 | + handlerData.xhr.setRequestHeader('sentry-trace', sentryHeaders['sentry-trace']); |
| 267 | + if (sentryHeaders.tracestate) { |
| 268 | + handlerData.xhr.setRequestHeader('tracesstate', sentryHeaders.tracestate); |
| 269 | + } |
265 | 270 | } catch (_) {
|
266 | 271 | // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.
|
267 | 272 | }
|
|
0 commit comments