From 17b11104644afbef75c0c99e121f972815dec2fc Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Tue, 10 Oct 2017 16:41:03 -0400 Subject: [PATCH] skip certain headers while proxying websockets --- .../cloud/gateway/filter/WebsocketRoutingFilter.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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;