diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/RequestHeaderToRequestUriGatewayFilterFactory.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/RequestHeaderToRequestUriGatewayFilterFactory.java index 63f6967c..371b01a6 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/RequestHeaderToRequestUriGatewayFilterFactory.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/RequestHeaderToRequestUriGatewayFilterFactory.java @@ -18,8 +18,6 @@ package org.springframework.cloud.gateway.filter.factory; import java.net.MalformedURLException; import java.net.URI; -import java.net.URISyntaxException; -import java.net.URL; import java.util.Arrays; import java.util.List; import java.util.Optional; @@ -71,9 +69,11 @@ public class RequestHeaderToRequestUriGatewayFilterFactory String requestUrl = exchange.getRequest().getHeaders().getFirst(config.getName()); return Optional.ofNullable(requestUrl).map(url -> { try { - return new URL(url).toURI(); + URI uri = URI.create(url); + uri.toURL(); // validate url + return uri; } - catch (MalformedURLException | URISyntaxException e) { + catch (IllegalArgumentException | MalformedURLException e) { log.info("Request url is invalid : url={}, error={}", requestUrl, e.getMessage()); return null; } diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/factory/RequestHeaderToRequestUriGatewayFilterFactoryIntegrationTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/factory/RequestHeaderToRequestUriGatewayFilterFactoryIntegrationTests.java index 5f7cbd9a..6dc07f48 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/factory/RequestHeaderToRequestUriGatewayFilterFactoryIntegrationTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/factory/RequestHeaderToRequestUriGatewayFilterFactoryIntegrationTests.java @@ -20,7 +20,6 @@ import java.net.URI; import java.util.Optional; import com.fasterxml.jackson.databind.JsonNode; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.springframework.boot.SpringBootConfiguration; @@ -48,7 +47,6 @@ public class RequestHeaderToRequestUriGatewayFilterFactoryIntegrationTests exten int port; @Test - @Disabled public void changeUriWorkWithProperties() { testClient.get().uri("/").header("Host", "www.changeuri.org") .header("X-CF-Forwarded-Url", "http://localhost:" + port + "/actuator/health").exchange() @@ -56,7 +54,6 @@ public class RequestHeaderToRequestUriGatewayFilterFactoryIntegrationTests exten } @Test - @Disabled public void changeUriWorkWithDsl() { testClient.get().uri("/").header("Host", "www.changeuri.org") .header("X-Next-Url", "http://localhost:" + port + "/actuator/health").exchange()