Merge branch '2.2.x'
This commit is contained in:
@@ -37,7 +37,9 @@ public class AddRequestHeaderGatewayFilterFactory extends AbstractNameValueGatew
|
||||
@Override
|
||||
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
|
||||
String value = ServerWebExchangeUtils.expand(exchange, config.getValue());
|
||||
ServerHttpRequest request = exchange.getRequest().mutate().header(config.getName(), value).build();
|
||||
ServerHttpRequest request = exchange.getRequest().mutate()
|
||||
.headers(httpHeaders -> httpHeaders.add(config.getName(), value))
|
||||
.build();
|
||||
|
||||
return chain.filter(exchange.mutate().request(request).build());
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.springframework.cloud.gateway.filter.factory;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
|
||||
import org.junit.Test;
|
||||
@@ -59,6 +60,18 @@ public class AddRequestHeaderGatewayFilterFactoryTests extends BaseWebClientTest
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addRequestHeaderFilterWorksMultipleValues() {
|
||||
testClient.get().uri("/multivalueheaders")
|
||||
.header("Host", "www.addrequestheader.org").exchange()
|
||||
.expectBody(Map.class).consumeWith(result -> {
|
||||
Map<String, Object> headers = getMap(result.getResponseBody(),
|
||||
"headers");
|
||||
assertThat(headers).containsEntry("X-Request-Example",
|
||||
Arrays.asList("ValueA", "ValueB"));
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addRequestHeaderFilterWorksJavaDsl() {
|
||||
testClient.get().uri("/headers").header("Host", "www.addrequestheaderjava.org").exchange().expectBody(Map.class)
|
||||
@@ -68,6 +81,18 @@ public class AddRequestHeaderGatewayFilterFactoryTests extends BaseWebClientTest
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addRequestHeaderFilterMultipleValuesWorksJavaDsl() {
|
||||
testClient.get().uri("/multivalueheaders")
|
||||
.header("Host", "www.addrequestheaderjava.org").exchange()
|
||||
.expectBody(Map.class).consumeWith(result -> {
|
||||
Map<String, Object> headers = getMap(result.getResponseBody(),
|
||||
"headers");
|
||||
assertThat(headers).containsEntry("X-Request-Acme",
|
||||
Arrays.asList("ValueB-www", "ValueC-www"));
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void toStringFormat() {
|
||||
NameValueConfig config = new NameValueConfig().setName("myname").setValue("myvalue");
|
||||
@@ -89,6 +114,13 @@ public class AddRequestHeaderGatewayFilterFactoryTests extends BaseWebClientTest
|
||||
r -> r.path("/headers").and().host("{sub}.addrequestheaderjava.org")
|
||||
.filters(f -> f.prefixPath("/httpbin").addRequestHeader("X-Request-Acme", "ValueB-{sub}"))
|
||||
.uri(uri))
|
||||
.route("add_multiple_request_header_java_test", r -> r
|
||||
.path("/multivalueheaders").and()
|
||||
.host("{sub}.addrequestheaderjava.org")
|
||||
.filters(f -> f.prefixPath("/httpbin")
|
||||
.addRequestHeader("X-Request-Acme", "ValueB-{sub}")
|
||||
.addRequestHeader("X-Request-Acme", "ValueC-{sub}"))
|
||||
.uri(uri))
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,13 @@ spring:
|
||||
- id: add_request_header_test
|
||||
uri: ${test.uri}
|
||||
predicates:
|
||||
- Path=/headers
|
||||
- Path=/headers
|
||||
filters:
|
||||
- AddRequestHeader=X-Request-Example, ValueA
|
||||
- AddRequestHeader=X-Request-Example, ValueA
|
||||
- id: add_multiple_request_header_test
|
||||
uri: ${test.uri}
|
||||
predicates:
|
||||
- Path=/multivalueheaders
|
||||
filters:
|
||||
- AddRequestHeader=X-Request-Example, ValueA
|
||||
- AddRequestHeader=X-Request-Example, ValueB
|
||||
|
||||
Reference in New Issue
Block a user