Tests for null if no remote address.

fixes gh-430
This commit is contained in:
Spencer Gibb
2018-07-13 15:02:27 -04:00
parent e9ea2b6297
commit 8077b3d62b
2 changed files with 22 additions and 1 deletions

View File

@@ -172,7 +172,9 @@ public class XForwardedHeadersFilter implements HttpHeadersFilter, Ordered {
original.entrySet().stream()
.forEach(entry -> updated.addAll(entry.getKey(), entry.getValue()));
if (isForEnabled()) {
if (isForEnabled() &&
request.getRemoteAddress() != null && request.getRemoteAddress().getAddress() != null)
{
String remoteAddr = request.getRemoteAddress().getAddress().getHostAddress();
List<String> xforwarded = original.get(X_FORWARDED_FOR_HEADER);
// prevent duplicates

View File

@@ -37,6 +37,25 @@ import static org.springframework.cloud.gateway.filter.headers.XForwardedHeaders
*/
public class XForwardedHeadersFilterTests {
@Test
public void remoteAddressIsNull() throws Exception {
MockServerHttpRequest request = MockServerHttpRequest
.get("http://localhost:8080/get")
.header(HttpHeaders.HOST, "myhost")
.build();
XForwardedHeadersFilter filter = new XForwardedHeadersFilter();
HttpHeaders headers = filter.filter(request.getHeaders(), MockServerWebExchange.from(request));
assertThat(headers).containsKeys(X_FORWARDED_HOST_HEADER,
X_FORWARDED_PORT_HEADER, X_FORWARDED_PROTO_HEADER);
assertThat(headers.getFirst(X_FORWARDED_HOST_HEADER)).isEqualTo("localhost:8080");
assertThat(headers.getFirst(X_FORWARDED_PORT_HEADER)).isEqualTo("8080");
assertThat(headers.getFirst(X_FORWARDED_PROTO_HEADER)).isEqualTo("http");
}
@Test
public void xForwardedHeadersDoNotExist() throws Exception {
MockServerHttpRequest request = MockServerHttpRequest