From 954f9587906ae0da60debae6d95a8517288c0b9f Mon Sep 17 00:00:00 2001 From: AllanZhengYP Date: Thu, 9 Sep 2021 19:16:54 +0000 Subject: [PATCH] fix(s3-request-presigner): inject hostname with custom port --- packages/s3-request-presigner/src/presigner.spec.ts | 7 ++++--- packages/s3-request-presigner/src/presigner.ts | 3 +++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/s3-request-presigner/src/presigner.spec.ts b/packages/s3-request-presigner/src/presigner.spec.ts index 512919b24419..26a0d0cd0788 100644 --- a/packages/s3-request-presigner/src/presigner.spec.ts +++ b/packages/s3-request-presigner/src/presigner.spec.ts @@ -108,11 +108,12 @@ describe("s3 presigner", () => { expect(signedHeaders).toContain("x-amz-server-side-encryption-customer-algorithm"); }); - it("should inject host header if not supplied", async () => { + it("should inject host header with port if not supplied", async () => { const signer = new S3RequestPresigner(s3ResolvedConfig); - const signed = await signer.presign(minimalRequest); + const port = 12345; + const signed = await signer.presign({ ...minimalRequest, headers: {}, port }); expect(signed.headers).toMatchObject({ - host: minimalRequest.hostname, + host: `${minimalRequest.hostname}:${port}`, }); }); }); diff --git a/packages/s3-request-presigner/src/presigner.ts b/packages/s3-request-presigner/src/presigner.ts index 91921d2f8e33..a3197cca3faa 100644 --- a/packages/s3-request-presigner/src/presigner.ts +++ b/packages/s3-request-presigner/src/presigner.ts @@ -45,6 +45,9 @@ export class S3RequestPresigner implements RequestPresigner { requestToSign.headers[SHA256_HEADER] = UNSIGNED_PAYLOAD; if (!requestToSign.headers["host"]) { requestToSign.headers.host = requestToSign.hostname; + if (requestToSign.port) { + requestToSign.headers.host = `${requestToSign.headers.host}:${requestToSign.port}`; + } } return this.signer.presign(requestToSign, { expiresIn: 900,