Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update fetch instrumentation to be runtime agnostic #4063

Merged
Expand Up @@ -132,7 +132,12 @@ export class FetchInstrumentation extends InstrumentationBase<
SemanticAttributes.HTTP_SCHEME,
parsedUrl.protocol.replace(':', '')
);
span.setAttribute(SemanticAttributes.HTTP_USER_AGENT, navigator.userAgent);
if (typeof navigator !== 'undefined') {
span.setAttribute(
SemanticAttributes.HTTP_USER_AGENT,
navigator.userAgent
);
}
}

/**
Expand Down
9 changes: 7 additions & 2 deletions packages/opentelemetry-sdk-trace-web/src/utils.ts
Expand Up @@ -131,6 +131,11 @@ export function sortResources(
});
}

/** Returns the origin if present (if in browser context). */
function getOrigin(): string | undefined {
return typeof location !== 'undefined' ? location.origin : undefined;
}

/**
* Get closest performance resource ignoring the resources that have been
* already used.
Expand Down Expand Up @@ -174,7 +179,7 @@ export function getResource(
}
const sorted = sortResources(filteredResources);

if (parsedSpanUrl.origin !== location.origin && sorted.length > 1) {
if (parsedSpanUrl.origin !== getOrigin() && sorted.length > 1) {
let corsPreFlightRequest: PerformanceResourceTiming | undefined = sorted[0];
let mainRequest: PerformanceResourceTiming = findMainRequest(
sorted,
Expand Down Expand Up @@ -438,7 +443,7 @@ export function shouldPropagateTraceHeaders(
}
const parsedSpanUrl = parseUrl(spanUrl);

if (parsedSpanUrl.origin === location.origin) {
if (parsedSpanUrl.origin === getOrigin()) {
return true;
} else {
return propagateTraceHeaderUrls.some(propagateTraceHeaderUrl =>
Expand Down