Browse Source

Proactively reject URLs without target address

Issue: SPR-15782
pull/1481/head
Rossen Stoyanchev 9 years ago
parent
commit
147368eccc
  1. 4
      spring-web/src/main/java/org/springframework/http/client/reactive/ReactorClientHttpConnector.java
  2. 10
      spring-webflux/src/test/java/org/springframework/web/reactive/function/client/WebClientIntegrationTests.java

4
spring-web/src/main/java/org/springframework/http/client/reactive/ReactorClientHttpConnector.java

@ -68,6 +68,10 @@ public class ReactorClientHttpConnector implements ClientHttpConnector { @@ -68,6 +68,10 @@ public class ReactorClientHttpConnector implements ClientHttpConnector {
public Mono<ClientHttpResponse> connect(HttpMethod method, URI uri,
Function<? super ClientHttpRequest, Mono<Void>> requestCallback) {
if (!uri.isAbsolute()) {
return Mono.error(new IllegalArgumentException("URI is not absolute: " + uri));
}
return this.httpClient
.request(adaptHttpMethod(method),
uri.toString(),

10
spring-webflux/src/test/java/org/springframework/web/reactive/function/client/WebClientIntegrationTests.java

@ -568,6 +568,16 @@ public class WebClientIntegrationTests { @@ -568,6 +568,16 @@ public class WebClientIntegrationTests {
}).verifyComplete();
}
@Test // SPR-15782
public void absoluteUri() throws Exception {
String uri = "/api/v4/groups/1";
Mono<ClientResponse> responseMono = WebClient.builder().build().get().uri(uri).exchange();
StepVerifier.create(responseMono)
.expectErrorMessage("URI is not absolute: " + uri)
.verify(Duration.ofSeconds(5));
}
@SuppressWarnings("serial")
private static class MyException extends RuntimeException {

Loading…
Cancel
Save