Do not write headers when value is null.

Fixes gh-2378
This commit is contained in:
spencergibb
2021-10-06 23:26:37 -04:00
parent fd3a8e0cf1
commit 4ac1fcb548
2 changed files with 16 additions and 0 deletions

View File

@@ -284,6 +284,9 @@ public class XForwardedHeadersFilter implements HttpHeadersFilter, Ordered {
}
private void write(HttpHeaders headers, String name, String value, boolean append) {
if (value == null) {
return;
}
if (append) {
headers.add(name, value);
// these headers should be treated as a single comma separated header

View File

@@ -296,4 +296,17 @@ public class XForwardedHeadersFilterTests {
assertThat(headers.getFirst(X_FORWARDED_FOR_HEADER)).isEqualTo("10.0.0.1,10.0.0.1");
}
@Test
public void nullValuesSkipped() throws Exception {
MockServerHttpRequest request = MockServerHttpRequest.get("/get")
.remoteAddress(new InetSocketAddress(InetAddress.getByName("10.0.0.1"), 80))
.header(X_FORWARDED_FOR_HEADER, "10.0.0.1").build();
XForwardedHeadersFilter filter = new XForwardedHeadersFilter();
HttpHeaders headers = filter.filter(request.getHeaders(), MockServerWebExchange.from(request));
assertThat(headers).doesNotContainKeys(X_FORWARDED_PROTO_HEADER, X_FORWARDED_HOST_HEADER);
}
}