最新の安定バージョンについては、Spring Cloud Gateway 5.0.1 を使用してください! |
RewriteLocationResponseHeader フィルター
RewriteLocationResponseHeader フィルターは、通常、バックエンド固有の詳細を削除するために、Location レスポンスヘッダーの値を変更します。stripVersionMode、locationHeaderName、hostValue、protocolsRegex パラメーターを受け取ります。次のリストは、RewriteLocationResponseHeader フィルターを構成します。
spring:
cloud:
gateway:
mvc:
routes:
- id: rewritelocationresponseheader_route
uri: http://example.org
predicates:
- Path=/**
filters:
- RewriteLocationResponseHeader=AS_IN_REQUEST, Location, ,import static org.springframework.cloud.gateway.server.mvc.filter.BeforeFilterFunctions.uri;
import static org.springframework.cloud.gateway.server.mvc.filter.RewriteLocationResponseHeaderFilterFunctions.rewriteLocationResponseHeader;
import static org.springframework.cloud.gateway.server.mvc.filter.RewriteLocationResponseHeaderFilterFunctions.StripVersion;
import static org.springframework.cloud.gateway.server.mvc.handler.GatewayRouterFunctions.route;
import static org.springframework.cloud.gateway.server.mvc.handler.HandlerFunctions.http;
@Configuration
class RouteConfiguration {
@Bean
public RouterFunction<ServerResponse> gatewayRouterFunctionsRewriteLocationResponseHeader() {
return route("rewritelocationresponseheader_route")
.GET("/**", http())
.before(uri("https://example.org"))
.after(rewriteLocationResponseHeader(config -> config.setLocationHeaderName("Location")
.setStripVersion(StripVersion.AS_IN_REQUEST)))
.build();
}
} 例: POST api.example.com/some/object/name (英語) のリクエストの場合、object-service.prod.example.net/v2/some/object/id (英語) の Location レスポンスヘッダー値は api.example.com/some/object/id (英語) として書き換えられます。
stripVersionMode パラメーターには、次の可能な値があります: NEVER_STRIP、AS_IN_REQUEST (デフォルト)、ALWAYS_STRIP。
NEVER_STRIP: 元のリクエストパスにバージョンが含まれていない場合でも、バージョンは削除されません。AS_IN_REQUEST: バージョンは、元のリクエストパスにバージョンが含まれていない場合にのみ削除されます。ALWAYS_STRIP: 元のリクエストパスにバージョンが含まれている場合でも、バージョンは常に削除されます。
hostValue パラメーターが指定されている場合は、レスポンス Location ヘッダーの host:port 部分を置き換えるために使用されます。指定されていない場合は、Host リクエストヘッダーの値が使用されます。
protocolsRegex パラメーターは、プロトコル名が一致する有効な正規表現 String である必要があります。一致しない場合、フィルターは何もしません。デフォルトは http|https|ftp|ftps です。