From a24cebcd3fa228795ae1208cdb99ff51a40359f6 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Mon, 12 Aug 2024 13:31:06 +0200 Subject: [PATCH] fix(astro): Correctly extract request data --- packages/astro/src/server/middleware.ts | 17 ++++++++++++----- packages/astro/test/server/middleware.test.ts | 4 ++-- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/packages/astro/src/server/middleware.ts b/packages/astro/src/server/middleware.ts index f69fa113721a..828b2c3b58f5 100644 --- a/packages/astro/src/server/middleware.ts +++ b/packages/astro/src/server/middleware.ts @@ -12,7 +12,12 @@ import { withIsolationScope, } from '@sentry/node'; import type { Client, Scope, Span, SpanAttributes } from '@sentry/types'; -import { addNonEnumerableProperty, objectify, stripUrlQueryAndFragment } from '@sentry/utils'; +import { + addNonEnumerableProperty, + objectify, + stripUrlQueryAndFragment, + winterCGRequestToRequestData, +} from '@sentry/utils'; import type { APIContext, MiddlewareResponseHandler } from 'astro'; type MiddlewareOptions = { @@ -86,11 +91,13 @@ async function instrumentRequest( const isDynamicPageRequest = checkIsDynamicPageRequest(ctx); + const request = ctx.request; + const { method, headers } = isDynamicPageRequest - ? ctx.request - : // headers can only be accessed in dynamic routes. Accessing `ctx.request.headers` in a static route + ? request + : // headers can only be accessed in dynamic routes. Accessing `request.headers` in a static route // will make the server log a warning. - { method: ctx.request.method, headers: undefined }; + { method: request.method, headers: undefined }; return continueTrace( { @@ -101,7 +108,7 @@ async function instrumentRequest( getCurrentScope().setSDKProcessingMetadata({ // We store the request on the current scope, not isolation scope, // because we may have multiple requests nested inside each other - request: isDynamicPageRequest ? ctx.request : { method, url: ctx.request.url }, + request: isDynamicPageRequest ? winterCGRequestToRequestData(request) : { method, url: request.url }, }); if (options.trackClientIp && isDynamicPageRequest) { diff --git a/packages/astro/test/server/middleware.test.ts b/packages/astro/test/server/middleware.test.ts index 2bb3886b5dd8..093b2fad2d6b 100644 --- a/packages/astro/test/server/middleware.test.ts +++ b/packages/astro/test/server/middleware.test.ts @@ -224,9 +224,9 @@ describe('sentryMiddleware', () => { request: { method: 'GET', url: '/users', - headers: new Headers({ + headers: { 'some-header': 'some-value', - }), + }, }, }); expect(next).toHaveBeenCalledTimes(1);