diff --git a/src/Ocelot/WebSockets/Middleware/WebSocketsProxyMiddleware.cs b/src/Ocelot/WebSockets/Middleware/WebSocketsProxyMiddleware.cs index 68b2df48..033653ca 100644 --- a/src/Ocelot/WebSockets/Middleware/WebSocketsProxyMiddleware.cs +++ b/src/Ocelot/WebSockets/Middleware/WebSocketsProxyMiddleware.cs @@ -14,7 +14,7 @@ namespace Ocelot.WebSockets.Middleware public WebSocketsProxyMiddleware(OcelotRequestDelegate next, IOcelotLoggerFactory loggerFactory) - :base(loggerFactory.CreateLogger()) + : base(loggerFactory.CreateLogger()) { _next = next; } @@ -29,6 +29,17 @@ namespace Ocelot.WebSockets.Middleware var wsToUpstreamClient = await context.WebSockets.AcceptWebSocketAsync(); var wsToDownstreamService = new ClientWebSocket(); + + foreach (var requestHeader in context.Request.Headers) + { + // Do not copy the Sec-Websocket headers because it is specified by the own connection it will fail when you copy this one. + if (requestHeader.Key.StartsWith("Sec-WebSocket")) + { + continue; + } + wsToDownstreamService.Options.SetRequestHeader(requestHeader.Key, requestHeader.Value); + } + var uri = new Uri(serverEndpoint); await wsToDownstreamService.ConnectAsync(uri, CancellationToken.None);