From 53d8d18e92941486a6066163151debc486b47578 Mon Sep 17 00:00:00 2001 From: Emil Kruczek Date: Tue, 2 Sep 2025 15:40:46 +0200 Subject: [PATCH] fix: headers with null values removed from response --- .../proxy/internal/servlet/AwsHttpServletResponse.java | 9 ++++++--- .../internal/servlet/AwsHttpServletResponseTest.java | 10 ++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsHttpServletResponse.java b/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsHttpServletResponse.java index 86a72ead6..f5395a0bf 100644 --- a/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsHttpServletResponse.java +++ b/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsHttpServletResponse.java @@ -496,9 +496,12 @@ private void setHeader(String key, String value, boolean overwrite) { values = new ArrayList<>(); } - values.add(encodedValue); - - headers.put(encodedKey, values); + if (value == null && overwrite) { + headers.remove(encodedKey); + } else if (value != null) { + values.add(encodedValue); + headers.put(encodedKey, values); + } } private boolean canSetHeader() { diff --git a/aws-serverless-java-container-core/src/test/java/com/amazonaws/serverless/proxy/internal/servlet/AwsHttpServletResponseTest.java b/aws-serverless-java-container-core/src/test/java/com/amazonaws/serverless/proxy/internal/servlet/AwsHttpServletResponseTest.java index 88d2a5e74..143caab69 100644 --- a/aws-serverless-java-container-core/src/test/java/com/amazonaws/serverless/proxy/internal/servlet/AwsHttpServletResponseTest.java +++ b/aws-serverless-java-container-core/src/test/java/com/amazonaws/serverless/proxy/internal/servlet/AwsHttpServletResponseTest.java @@ -173,6 +173,16 @@ void responseHeaders_getAwsResponseHeaders_expectLatestHeader() { assertEquals("application/xml", awsResp.getFirst(HttpHeaders.CONTENT_TYPE)); } + @Test + void responseHeaders_setHeaderWithNullValue_expectHeaderRemoved() { + AwsHttpServletResponse resp = new AwsHttpServletResponse(null, null); + resp.setHeader(HttpHeaders.CONTENT_DISPOSITION, "inline"); + resp.setHeader(HttpHeaders.CONTENT_DISPOSITION, null); + + Headers awsResp = resp.getAwsResponseHeaders(); + assertEquals(0, awsResp.size()); + } + @Test void responseHeaders_getAwsResponseHeaders_expectedMultpleCookieHeaders() { AwsHttpServletResponse resp = new AwsHttpServletResponse(null, null);