diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/discovery/DiscoveryClientRouteDefinitionLocator.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/discovery/DiscoveryClientRouteDefinitionLocator.java index 82e746b88e..4fb12e28a5 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/discovery/DiscoveryClientRouteDefinitionLocator.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/discovery/DiscoveryClientRouteDefinitionLocator.java @@ -98,6 +98,14 @@ public Flux getRouteDefinitions() { return serviceInstances.filter(instances -> !instances.isEmpty()).flatMap(Flux::fromIterable) .filter(includePredicate).collectMap(ServiceInstance::getServiceId) + // Filter out illegal serviceIds + .filter(instance -> { + if (instance.getServiceId().startsWith(" ")) { + log.debug("Illegal ServiceId: +" + instance.getServiceId()); + return false; + } + return true; + }) // remove duplicates .flatMapMany(map -> Flux.fromIterable(map.values())).map(instance -> { RouteDefinition routeDefinition = buildRouteDefinition(urlExpr, instance);