Merge branch '4.1.x'

This commit is contained in:
spencergibb
2024-09-26 16:24:49 -04:00
2 changed files with 19 additions and 4 deletions

View File

@@ -17,7 +17,6 @@
package org.springframework.cloud.gateway.handler.predicate;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.function.Predicate;
import java.util.regex.Pattern;
@@ -59,9 +58,7 @@ public class HeaderRoutePredicateFactory extends AbstractRoutePredicateFactory<H
return new GatewayPredicate() {
@Override
public boolean test(ServerWebExchange exchange) {
List<String> values = exchange.getRequest()
.getHeaders()
.getOrDefault(config.header, Collections.emptyList());
List<String> values = exchange.getRequest().getHeaders().getValuesAsList(config.header);
if (values.isEmpty()) {
return false;
}

View File

@@ -92,6 +92,20 @@ public class HeaderRoutePredicateFactoryTests extends BaseWebClientTests {
assertThat(predicate.toString()).contains("Header: myheader regexp=myregexp");
}
@Test
public void headerRouteHandlesCommaSeparatedValues() {
testClient.get()
.uri("/get")
.header("X-Example-Header", "value1, value2 ,exact_match,value3")
.exchange()
.expectStatus()
.isOk()
.expectHeader()
.valueEquals(HANDLER_MAPPER_HEADER, RoutePredicateHandlerMapping.class.getSimpleName())
.expectHeader()
.valueEquals(ROUTE_ID_HEADER, "header_test_comma_separated");
}
@EnableAutoConfiguration
@SpringBootConfiguration
@Import(DefaultTestConfig.class)
@@ -104,6 +118,10 @@ public class HeaderRoutePredicateFactoryTests extends BaseWebClientTests {
RouteLocator queryRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route("header_exists_dsl", r -> r.header("X-Foo").filters(f -> f.prefixPath("/httpbin")).uri(uri))
.route("header_test_comma_separated",
r -> r.header("X-Example-Header", "exact_match")
.filters(f -> f.prefixPath("/httpbin"))
.uri(uri))
.build();
}