diff --git a/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaController.java b/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaController.java index 0205e38d6..220b9b876 100644 --- a/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaController.java +++ b/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/EurekaController.java @@ -69,10 +69,14 @@ public class EurekaController { return map; } - private void populateBase(HttpServletRequest request, Map model) { + protected void populateBase(HttpServletRequest request, Map model) { String servletPath = request.getServletPath(); String path = request.getContextPath() + (servletPath==null ? "" : servletPath); - String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; + String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path; + + if (!basePath.endsWith("/")) { + basePath += "/"; + } model.put("time", new Date()); model.put("basePath", basePath); diff --git a/spring-cloud-netflix-eureka-server/src/test/java/org/springframework/cloud/netflix/eureka/server/ApplicationServletPathTests.java b/spring-cloud-netflix-eureka-server/src/test/java/org/springframework/cloud/netflix/eureka/server/ApplicationServletPathTests.java index 293439be1..681f92c2e 100644 --- a/spring-cloud-netflix-eureka-server/src/test/java/org/springframework/cloud/netflix/eureka/server/ApplicationServletPathTests.java +++ b/spring-cloud-netflix-eureka-server/src/test/java/org/springframework/cloud/netflix/eureka/server/ApplicationServletPathTests.java @@ -1,6 +1,7 @@ package org.springframework.cloud.netflix.eureka.server; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.Map; diff --git a/spring-cloud-netflix-eureka-server/src/test/java/org/springframework/cloud/netflix/eureka/server/ApplicationTests.java b/spring-cloud-netflix-eureka-server/src/test/java/org/springframework/cloud/netflix/eureka/server/ApplicationTests.java index 88d672175..fda544730 100644 --- a/spring-cloud-netflix-eureka-server/src/test/java/org/springframework/cloud/netflix/eureka/server/ApplicationTests.java +++ b/spring-cloud-netflix-eureka-server/src/test/java/org/springframework/cloud/netflix/eureka/server/ApplicationTests.java @@ -1,6 +1,8 @@ package org.springframework.cloud.netflix.eureka.server; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; import java.util.Map; @@ -54,4 +56,17 @@ public class ApplicationTests { assertEquals(HttpStatus.OK, entity.getStatusCode()); } + @Test + public void noDoubleSlashes() { + String basePath = "http://localhost:" + port + "/"; + ResponseEntity entity = new TestRestTemplate().getForEntity( + basePath, String.class); + assertEquals(HttpStatus.OK, entity.getStatusCode()); + String body = entity.getBody(); + assertNotNull(body); + assertFalse("basePath contains double slashes", body.contains(basePath+"/")); + + } + + }