Fixes redirect dsl accidental recursion.

Fixes gh-2798
This commit is contained in:
ruansheng
2022-12-02 09:18:17 +08:00
committed by spencergibb
parent 51137c2610
commit 65d84afcb8
2 changed files with 15 additions and 3 deletions

View File

@@ -417,7 +417,7 @@ public class GatewayFilterSpec extends UriSpec {
* @return a {@link GatewayFilterSpec} that can be used to apply additional filters
*/
public GatewayFilterSpec redirect(String status, URI url) {
return redirect(status, url);
return redirect(status, url.toString());
}
/**

View File

@@ -16,6 +16,8 @@
package org.springframework.cloud.gateway.filter.factory;
import java.net.URI;
import org.junit.jupiter.api.Test;
import org.springframework.boot.SpringBootConfiguration;
@@ -51,6 +53,12 @@ public class RedirectToGatewayFilterFactoryTests extends BaseWebClientTests {
.isEqualTo(HttpStatus.FOUND).expectHeader().valueEquals(HttpHeaders.LOCATION, "/index.html#/customers");
}
@Test
public void redirectToRelativeUrlFilterWorksWithStrStatusCode() {
testClient.get().uri("/").header("Host", "strcode.relativeredirect.org").exchange().expectStatus()
.isEqualTo(HttpStatus.FOUND).expectHeader().valueEquals(HttpHeaders.LOCATION, "/index.html#/customers");
}
@Test
public void toStringFormat() {
Config config = new Config();
@@ -67,8 +75,12 @@ public class RedirectToGatewayFilterFactoryTests extends BaseWebClientTests {
@Bean
public RouteLocator testRouteLocator(RouteLocatorBuilder builder) {
return builder.routes().route("relative_redirect", r -> r.host("**.relativeredirect.org")
.filters(f -> f.redirect(302, "/index.html#/customers")).uri("no://op")).build();
return builder.routes()
.route("relative_redirect_uri_object", r -> r.host("strcode.relativeredirect.org")
.filters(f -> f.redirect("302", URI.create("/index.html#/customers"))).uri("no://op"))
.route("relative_redirect", r -> r.host("**.relativeredirect.org")
.filters(f -> f.redirect(302, "/index.html#/customers")).uri("no://op"))
.build();
}
}