From 938573a96756f926962878587c7c08b2747287d2 Mon Sep 17 00:00:00 2001 From: James Bourne Date: Tue, 12 Mar 2024 21:13:00 +0100 Subject: [PATCH] fix: do not overwrite headers, call `.set(k, v)` instead. (#1304) --- src/interceptor.ts | 33 +++++---------------------------- 1 file changed, 5 insertions(+), 28 deletions(-) diff --git a/src/interceptor.ts b/src/interceptor.ts index 97350b26..9ba891e3 100644 --- a/src/interceptor.ts +++ b/src/interceptor.ts @@ -1,7 +1,5 @@ import { Request as AWS4Request, sign } from "aws4"; import axios, { - AxiosHeaderValue, - AxiosHeaders, AxiosInstance, AxiosRequestConfig, AxiosRequestHeaders, @@ -9,11 +7,11 @@ import axios, { Method, } from "axios"; +import { OutgoingHttpHeaders } from "http"; import { CredentialsProvider } from "."; import { AssumeRoleCredentialsProvider } from "./credentials/assumeRoleCredentialsProvider"; import { isCredentialsProvider } from "./credentials/isCredentialsProvider"; import { SimpleCredentialsProvider } from "./credentials/simpleCredentialsProvider"; -import { OutgoingHttpHeaders } from "http"; export interface InterceptorOptions { /** @@ -169,12 +167,10 @@ export const aws4Interceptor = ({ const resolvedCredentials = await credentialsProvider.getCredentials(); sign(signingOptions, resolvedCredentials); - const signedHeaders = signingOptions.headers; - - if (signedHeaders) { - config.headers = AxiosHeaders.from( - outgoingHttpHeadersToAxiosHeaders(signedHeaders) - ); + if (signingOptions.headers) { + for (const [key, value] of Object.entries(signingOptions.headers)) { + config.headers.set(key, value); + } } if (signingOptions.signQuery) { @@ -190,25 +186,6 @@ export const aws4Interceptor = ({ }; }; -// Type is not exported by axios -interface _RawAxiosHeaders { - [key: string]: AxiosHeaderValue; -} - -const outgoingHttpHeadersToAxiosHeaders = ( - headers: OutgoingHttpHeaders -): _RawAxiosHeaders => { - const axiosHeaders: _RawAxiosHeaders = {}; - - for (const [key, value] of Object.entries(headers)) { - if (value) { - axiosHeaders[key] = value; - } - } - - return axiosHeaders; -}; - const getTransformer = (config: AxiosRequestConfig) => { const { transformRequest } = config;