Skip to content

Commit 16bdadd

Browse files
committed
Fix handling of headers in reactive HTTP requests to ensure case-insensitivity
1 parent e1c450d commit 16bdadd

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

spring-web/src/main/java/org/springframework/http/server/reactive/DefaultServerHttpRequestBuilder.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import org.springframework.http.HttpMethod;
3131
import org.springframework.lang.Nullable;
3232
import org.springframework.util.Assert;
33-
import org.springframework.util.LinkedMultiValueMap;
3433
import org.springframework.util.MultiValueMap;
3534
import org.springframework.util.StringUtils;
3635

@@ -72,7 +71,9 @@ public DefaultServerHttpRequestBuilder(ServerHttpRequest original) {
7271

7372
this.uri = original.getURI();
7473
// original headers can be immutable, so create a copy
75-
this.headers = new HttpHeaders(new LinkedMultiValueMap<>(original.getHeaders()));
74+
this.headers = new HttpHeaders();
75+
this.headers.putAll(original.getHeaders());
76+
7677
this.httpMethod = original.getMethod();
7778
this.contextPath = original.getPath().contextPath().value();
7879
this.remoteAddress = original.getRemoteAddress();

spring-web/src/test/java/org/springframework/http/server/reactive/ServerHttpRequestTests.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,13 @@ public void mutateDoesNotPreventAccessToNativeRequest() throws Exception {
212212
assertThat(nativeRequest).isInstanceOf(HttpServletRequest.class);
213213
}
214214

215+
@Test // gh-33666
216+
public void mutateKeepsHeadersCaseInsensitive() throws Exception {
217+
ServerHttpRequest request = createRequest("/path");
218+
request = request.mutate().header("key", "value").build();
219+
assertThat(request.getHeaders().get("KEY")).isEqualTo(Collections.singletonList("value"));
220+
}
221+
215222
private ServerHttpRequest createRequest(String uriString) throws Exception {
216223
return createRequest(uriString, "");
217224
}

0 commit comments

Comments
 (0)