Merge pull request #713 from kakawait/gh-583

* gh-583:
  Removing multiple successive slashes
This commit is contained in:
Spencer Gibb
2015-12-15 14:38:12 -07:00
2 changed files with 21 additions and 4 deletions

View File

@@ -241,7 +241,7 @@ public class SimpleHostRoutingFilter extends ZuulFilter {
requestEntity);
URL host = RequestContext.getCurrentContext().getRouteHost();
HttpHost httpHost = getHttpHost(host);
uri = StringUtils.cleanPath(host.getPath() + uri);
uri = StringUtils.cleanPath((host.getPath() + uri).replaceAll("/{2,}", "/"));
HttpRequest httpRequest;
switch (verb.toUpperCase()) {
case "POST":

View File

@@ -16,13 +16,11 @@
package org.springframework.cloud.netflix.zuul;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -64,6 +62,9 @@ import com.netflix.loadbalancer.ServerList;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = SampleZuulProxyApplication.class)
@WebAppConfiguration
@@ -188,6 +189,17 @@ public class SampleZuulProxyApplicationTests {
assertEquals("Received {key=[overridden]}", result.getBody());
}
@Test
public void simpleHostRouteWithTrailingSlash() {
routes.addRoute("/self/**", "http://localhost:" + this.port + "/");
this.endpoint.reset();
ResponseEntity<String> result = new TestRestTemplate().exchange(
"http://localhost:" + this.port + "/self/trailing-slash",
HttpMethod.GET, new HttpEntity<>((Void) null), String.class);
assertEquals(HttpStatus.OK, result.getStatusCode());
assertEquals("/trailing-slash", result.getBody());
}
@Test
public void ribbonCommandFactoryOverridden() {
assertTrue("ribbonCommandFactory not a MyRibbonCommandFactory",
@@ -246,6 +258,11 @@ class SampleZuulProxyApplication {
return "Hello space";
}
@RequestMapping(value = "/trailing-slash")
public String trailingSlash(HttpServletRequest request) {
return request.getRequestURI();
}
@Bean
public RibbonCommandFactory ribbonCommandFactory(SpringClientFactory clientFactory) {
return new MyRibbonCommandFactory(clientFactory);