Only use scheme://host:port from routeUri
fixes gh-465
This commit is contained in:
@@ -68,11 +68,14 @@ public class RouteToRequestUrlFilter implements GlobalFilter, Ordered {
|
||||
routeUri = URI.create(routeUri.getSchemeSpecificPart());
|
||||
}
|
||||
|
||||
URI requestUrl = UriComponentsBuilder.fromUri(uri)
|
||||
.uri(routeUri)
|
||||
URI mergedUrl = UriComponentsBuilder.fromUri(uri)
|
||||
// .uri(routeUri)
|
||||
.scheme(routeUri.getScheme())
|
||||
.host(routeUri.getHost())
|
||||
.port(routeUri.getPort())
|
||||
.build(encoded)
|
||||
.toUri();
|
||||
exchange.getAttributes().put(GATEWAY_REQUEST_URL_ATTR, requestUrl);
|
||||
exchange.getAttributes().put(GATEWAY_REQUEST_URL_ATTR, mergedUrl);
|
||||
return chain.filter(exchange);
|
||||
}
|
||||
|
||||
|
||||
@@ -48,9 +48,10 @@ public class RouteToRequestUrlFilterTests {
|
||||
.get("http://localhost/get?a=b")
|
||||
.build();
|
||||
|
||||
ServerWebExchange webExchange = testFilter(request, "http://myhost");
|
||||
ServerWebExchange webExchange = testFilter(request, "http://myhost/mypath");
|
||||
URI uri = webExchange.getRequiredAttribute(GATEWAY_REQUEST_URL_ATTR);
|
||||
assertThat(uri).hasScheme("http").hasHost("myhost")
|
||||
.hasPath("/get")
|
||||
.hasParameter("a", "b");
|
||||
}
|
||||
|
||||
@@ -60,6 +61,17 @@ public class RouteToRequestUrlFilterTests {
|
||||
.get("http://localhost/getb")
|
||||
.build();
|
||||
|
||||
ServerWebExchange webExchange = testFilter(request, "lb://myhost");
|
||||
URI uri = webExchange.getRequiredAttribute(GATEWAY_REQUEST_URL_ATTR);
|
||||
assertThat(uri).hasScheme("lb").hasHost("myhost");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void happyPathLbPlusScheme() {
|
||||
MockServerHttpRequest request = MockServerHttpRequest
|
||||
.get("http://localhost/getb")
|
||||
.build();
|
||||
|
||||
ServerWebExchange webExchange = testFilter(request, "lb:http://myhost");
|
||||
URI uri = webExchange.getRequiredAttribute(GATEWAY_REQUEST_URL_ATTR);
|
||||
assertThat(uri).hasScheme("http").hasHost("myhost");
|
||||
@@ -114,7 +126,7 @@ public class RouteToRequestUrlFilterTests {
|
||||
.method(HttpMethod.GET, url)
|
||||
.build();
|
||||
|
||||
ServerWebExchange webExchange = testFilter(request, "http://myhost");
|
||||
ServerWebExchange webExchange = testFilter(request, "http://myhost/abc%20def/get");
|
||||
URI uri = webExchange.getRequiredAttribute(GATEWAY_REQUEST_URL_ATTR);
|
||||
assertThat(uri).hasScheme("http").hasHost("myhost")
|
||||
.hasPath("/abc def/get");
|
||||
@@ -170,9 +182,9 @@ public class RouteToRequestUrlFilterTests {
|
||||
}
|
||||
}
|
||||
|
||||
private ServerWebExchange testFilter(MockServerHttpRequest request, String url) {
|
||||
private ServerWebExchange testFilter(MockServerHttpRequest request, String routeUri) {
|
||||
Route value = Route.async().id("1")
|
||||
.uri(URI.create(url))
|
||||
.uri(URI.create(routeUri))
|
||||
.order(0)
|
||||
.predicate(swe -> true)
|
||||
.build();
|
||||
|
||||
Reference in New Issue
Block a user