-
Notifications
You must be signed in to change notification settings - Fork 136
Description
For security GraphQL Server also does origin check so request header should have origin information.
Below is the line# which is working on local copy.
GraphQL.Client -->Websocket-->GraphQLHttpWebSocket.cs
Appreciate your quick help on this.
#if NETFRAMEWORK
// fix websocket not supported on win 7 using
// https://github.com/PingmanTools/System.Net.WebSockets.Client.Managed
clientWebSocket = SystemClientWebSocket.CreateClientWebSocket();
switch (clientWebSocket) {
case ClientWebSocket nativeWebSocket:
nativeWebSocket.Options.AddSubProtocol("graphql-ws");
nativeWebSocket.Options.SetRequestHeader("Origin", webSocketUri.Host);
nativeWebSocket.Options.ClientCertificates = ((HttpClientHandler)Options.HttpMessageHandler).ClientCertificates;
nativeWebSocket.Options.UseDefaultCredentials = ((HttpClientHandler)Options.HttpMessageHandler).UseDefaultCredentials;
break;
case System.Net.WebSockets.Managed.ClientWebSocket managedWebSocket:
managedWebSocket.Options.AddSubProtocol("graphql-ws");
managedWebSocket.Options.SetRequestHeader("Origin", webSocketUri.Host);
managedWebSocket.Options.ClientCertificates = ((HttpClientHandler)Options.HttpMessageHandler).ClientCertificates;
managedWebSocket.Options.UseDefaultCredentials = ((HttpClientHandler)Options.HttpMessageHandler).UseDefaultCredentials;
break;
default:
throw new NotSupportedException($"unknown websocket type {clientWebSocket.GetType().Name}");
}
#else
clientWebSocket = new ClientWebSocket();
clientWebSocket.Options.AddSubProtocol("graphql-ws");
clientWebSocket.Options.SetRequestHeader("Origin", webSocketUri.Host);
clientWebSocket.Options.ClientCertificates = ((HttpClientHandler)Options.HttpMessageHandler).ClientCertificates;
clientWebSocket.Options.UseDefaultCredentials = ((HttpClientHandler)Options.HttpMessageHandler).UseDefaultCredentials;
#endif