From cb471d97f96d7cf20d0d816819562457d6e057a1 Mon Sep 17 00:00:00 2001 From: Ben Clark Date: Fri, 21 Nov 2025 08:17:13 +0000 Subject: [PATCH] fix(cloudfront-signer): dont use the extended encoding for query parameters in the base url --- packages/cloudfront-signer/src/sign.spec.ts | 4 ++-- packages/cloudfront-signer/src/sign.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/cloudfront-signer/src/sign.spec.ts b/packages/cloudfront-signer/src/sign.spec.ts index 69edcf909310d..6b846a4381909 100644 --- a/packages/cloudfront-signer/src/sign.spec.ts +++ b/packages/cloudfront-signer/src/sign.spec.ts @@ -812,7 +812,7 @@ describe("getSignedUrl- when signing a URL with a date range", () => { }); describe("url component encoding", () => { - it("should use extended encoding for query params in the base URL", () => { + it("should use standard encoding for query params in the base URL", () => { const url = "https://d111111abcdef8.cloudfront.net/private-content/private.jpeg?q=!@#$%^&*()&image-description=aws's image&'''&!()=5"; const signedUrl = getSignedUrl({ @@ -823,7 +823,7 @@ describe("url component encoding", () => { }); const target = - "https://d111111abcdef8.cloudfront.net/private-content/private.jpeg?q=%21%40%23%24%25%5E&%2A%28%29=&image-description=aws%27s%20image&%27%27%27=&%21%28%29=5"; + "https://d111111abcdef8.cloudfront.net/private-content/private.jpeg?q=!%40%23%24%25%5E&*()=&image-description=aws's%20image&'''=&!()=5"; expect(signedUrl.slice(0, target.length)).toBe(target); }); diff --git a/packages/cloudfront-signer/src/sign.ts b/packages/cloudfront-signer/src/sign.ts index c323ea346c222..85cfc39613538 100644 --- a/packages/cloudfront-signer/src/sign.ts +++ b/packages/cloudfront-signer/src/sign.ts @@ -147,7 +147,7 @@ export function getSignedUrl({ if (url.includes("?")) { const [hostAndPath, query] = url.split("?"); const params = [...new URLSearchParams(query).entries()] - .map(([key, value]) => `${extendedEncodeURIComponent(key)}=${extendedEncodeURIComponent(value)}`) + .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`) .join("&"); return `${hostAndPath}?${params}`; }