Skip to content

Please add Origin Header information on WebSocket #179

@akoliya003

Description

@akoliya003

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions