diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/RemoveResponseHeaderGatewayFilterFactory.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/RemoveResponseHeaderGatewayFilterFactory.java index bf563fe04c..e7cc899335 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/RemoveResponseHeaderGatewayFilterFactory.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/RemoveResponseHeaderGatewayFilterFactory.java @@ -47,8 +47,11 @@ public GatewayFilter apply(NameConfig config) { return new GatewayFilter() { @Override public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { - return chain.filter(exchange) - .then(Mono.fromRunnable(() -> exchange.getResponse().getHeaders().remove(config.getName()))); + return chain.filter(exchange).then(Mono.fromRunnable(() -> { + if (!exchange.getResponse().isCommitted()) { + exchange.getResponse().getHeaders().remove(config.getName()); + } + })); } @Override