diff --git a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/WebsocketRoutingFilter.java b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/WebsocketRoutingFilter.java index 8bcc623f6..31708fbb8 100644 --- a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/WebsocketRoutingFilter.java +++ b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/WebsocketRoutingFilter.java @@ -70,7 +70,15 @@ public class WebsocketRoutingFilter implements GlobalFilter, Ordered { public ProxyWebSocketHandler(URI url, WebSocketClient client, HttpHeaders headers) { this.client = client; this.url = url; - this.headers = headers; + this.headers = new HttpHeaders();//headers; + //TODO: better strategy to filter these headers? + headers.entrySet().forEach(header -> { + if (!header.getKey().toLowerCase().startsWith("sec-websocket") + && !header.getKey().equalsIgnoreCase("upgrade") + && !header.getKey().equalsIgnoreCase("connection")) { + this.headers.addAll(header.getKey(), header.getValue()); + } + }); List protocols = headers.get(SEC_WEBSOCKET_PROTOCOL); if (protocols != null) { this.subProtocols = protocols;