diff --git a/.changeset/plenty-bobcats-drum.md b/.changeset/plenty-bobcats-drum.md new file mode 100644 index 0000000000..045b0befa8 --- /dev/null +++ b/.changeset/plenty-bobcats-drum.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-defaults': minor +--- + +Do not send etag or If-Modified-Since headers for gitlab artifact urls diff --git a/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts b/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts index 77a8d31623..caf96b877c 100644 --- a/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts +++ b/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts @@ -74,6 +74,7 @@ export class GitlabUrlReader implements UrlReaderService { options?: UrlReaderServiceReadUrlOptions, ): Promise { const { etag, lastModifiedAfter, signal, token } = options ?? {}; + const isArtifact = url.includes('/-/jobs/artifacts/'); const builtUrl = await this.getGitlabFetchUrl(url); let response: Response; @@ -81,10 +82,11 @@ export class GitlabUrlReader implements UrlReaderService { response = await fetch(builtUrl, { headers: { ...getGitLabRequestOptions(this.integration.config, token).headers, - ...(etag && { 'If-None-Match': etag }), - ...(lastModifiedAfter && { - 'If-Modified-Since': lastModifiedAfter.toUTCString(), - }), + ...(etag && !isArtifact && { 'If-None-Match': etag }), + ...(lastModifiedAfter && + !isArtifact && { + 'If-Modified-Since': lastModifiedAfter.toUTCString(), + }), }, // TODO(freben): The signal cast is there because pre-3.x versions of // node-fetch have a very slightly deviating AbortSignal type signature.